diff --git a/Control/PileUpComps/CMakeLists.txt b/Control/PileUpComps/CMakeLists.txt
index 18d80ceba95eac0a698a3a1ff458fe904cb988ac..01e7273ab197eab005d3b580d14cc158a3383b00 100644
--- a/Control/PileUpComps/CMakeLists.txt
+++ b/Control/PileUpComps/CMakeLists.txt
@@ -20,6 +20,7 @@ atlas_depends_on_subdirs( PRIVATE
 # External dependencies:
 find_package( Boost COMPONENTS filesystem thread system )
 find_package( CLHEP )
+find_package( GTest )
 
 # Component(s) in the package:
 atlas_add_component( PileUpComps
@@ -32,3 +33,7 @@ atlas_add_component( PileUpComps
                      EventInfoUtils xAODEventInfo GaudiKernel )
 
 
+atlas_add_test( PileUpHashHelper_test
+                SOURCES src/PileUpHashHelper.cxx test/PileUpHashHelper_test.cxx
+                INCLUDE_DIRS src ${GTEST_INCLUDE_DIRS}
+                LINK_LIBRARIES xAODEventInfo ${GTEST_LIBRARIES} )
diff --git a/Control/PileUpComps/src/PileUpEventLoopMgr.cxx b/Control/PileUpComps/src/PileUpEventLoopMgr.cxx
index f1c4dad262bb8a7f217c4e6f28324be17a1964bf..b89ee186d7f2e3cc2e61b6fa2728ba0a763ef84a 100644
--- a/Control/PileUpComps/src/PileUpEventLoopMgr.cxx
+++ b/Control/PileUpComps/src/PileUpEventLoopMgr.cxx
@@ -5,6 +5,8 @@
 
 // Class header
 #include "PileUpEventLoopMgr.h"
+// Helper header
+#include "PileUpHashHelper.h"
 
 // Athena includes
 #include "AthenaBaseComps/AthMsgStreamMacros.h"
@@ -497,6 +499,34 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt)
             }
         }  //loop over xings
 
+      // Calculate/copy pile-up hash
+      xAOD::EventInfo::PileUpMixtureID pileUpMixtureID;
+      if (m_isEventOverlayJob && m_isEventOverlayJobMC) {
+        // Just copy over the background PileUpMixtureID
+        pileUpMixtureID = pEvent->pileUpMixtureID();
+        if ( pileUpMixtureID.lowBits != 0 || pileUpMixtureID.highBits != 0 ) {
+          pOverEvent->setPileUpMixtureID( pileUpMixtureID );
+        }
+      } else {
+        PileUpHashHelper pileUpHashHelper;
+
+        if (m_isEventOverlayJob) {
+          pileUpHashHelper.addToHashSource(std::to_string(pEvent->eventNumber()));
+        } else {
+          pileUpHashHelper.addToHashSource(pOverEvent);
+        }
+
+        ATH_MSG_VERBOSE("Pile-up hash source:" << pileUpHashHelper.hashSource());
+
+        // Calculate and set hash
+        uuid_t pileUpHash;
+        pileUpHashHelper.calculateHash(pileUpHash);
+
+        pOverEvent->setPileUpMixtureID( PileUpHashHelper::uuidToPileUpMixtureId(pileUpHash) );
+      }
+
+      ATH_MSG_DEBUG("PileUpMixtureID = " << pOverEvent->pileUpMixtureID());
+
       //set active store back to the overlaid one
       pActiveStore->setStore(&(*m_evtStore));
 
diff --git a/Control/PileUpComps/src/PileUpHashHelper.cxx b/Control/PileUpComps/src/PileUpHashHelper.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..d9e4c090123c3b420ce43cfdbbe1de9b85fc8f34
--- /dev/null
+++ b/Control/PileUpComps/src/PileUpHashHelper.cxx
@@ -0,0 +1,76 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+/// @author Tadej Novak
+
+#include <CxxUtils/MD5.h>
+
+#include "PileUpHashHelper.h"
+
+void PileUpHashHelper::addToHashSource(const std::string &string)
+{
+  m_stream << string;
+}
+
+void PileUpHashHelper::addToHashSource(const xAOD::EventInfo *eventInfo)
+{
+  const std::vector<xAOD::EventInfo::SubEvent> &subEventsSource = eventInfo->subEvents();
+  std::vector<std::reference_wrapper<const xAOD::EventInfo::SubEvent>> subEvents(subEventsSource.begin(), subEventsSource.end());
+
+  std::stable_sort(subEvents.begin(), subEvents.end(), [](const xAOD::EventInfo::SubEvent &a, const xAOD::EventInfo::SubEvent &b) {
+    return (a.ptr()->bcid() < b.ptr()->bcid()) ||
+      ((a.ptr()->bcid() == b.ptr()->bcid()) && (a.type() < b.type())) ||
+      ((a.ptr()->bcid() == b.ptr()->bcid()) && (a.type() == b.type()) && (a.ptr()->eventNumber() < b.ptr()->eventNumber()));
+  });
+
+  // Generate subevents info string
+  bool first = true;
+  for (const xAOD::EventInfo::SubEvent &subevent : subEvents) {
+    if (subevent.type() == xAOD::EventInfo::Signal) {
+      continue;
+    }
+
+    if (first) {
+      first = false;
+    } else {
+      m_stream << ";";
+    }
+
+    m_stream << (static_cast<int32_t>(subevent.ptr()->bcid()) - static_cast<int32_t>(eventInfo->bcid())) << "_" << subevent.type() << "_" << subevent.ptr()->eventNumber();
+  }
+}
+
+void PileUpHashHelper::clearHashSource()
+{
+  m_stream.str(std::string());
+}
+
+void PileUpHashHelper::calculateHash(uuid_t &hash) const
+{
+  std::string sourceStr = m_stream.str();
+
+  MD5 md5Hash(sourceStr);
+  md5Hash.uuid_digest(hash);
+}
+
+xAOD::EventInfo::PileUpMixtureID PileUpHashHelper::uuidToPileUpMixtureId(const uuid_t &hash)
+{
+  xAOD::EventInfo::PileUpMixtureID mixture{};
+
+  for (uint16_t i = 0; i < PILEUP_SIZE_BYTES; i++) {
+    mixture.lowBits |= (static_cast<unsigned long long>(hash[i]) << (i * sizeof(unsigned char) * CHAR_BIT));
+    mixture.highBits |= (static_cast<unsigned long long>(hash[i + PILEUP_SIZE_BYTES]) << (i * sizeof(unsigned char) * CHAR_BIT));
+  }
+
+  return mixture;
+}
+
+void PileUpHashHelper::pileUpMixtureIdToUuid(const xAOD::EventInfo::PileUpMixtureID &mixture,
+                                             uuid_t &hash)
+{
+  for (uint16_t i = 0; i < PILEUP_SIZE_BYTES; i++) {
+    hash[i] |= (mixture.lowBits >> (i * sizeof(unsigned char) * CHAR_BIT));
+    hash[i + PILEUP_SIZE_BYTES] |= (mixture.highBits >> (i * sizeof(unsigned char) * CHAR_BIT));
+  }
+}
diff --git a/Control/PileUpComps/src/PileUpHashHelper.h b/Control/PileUpComps/src/PileUpHashHelper.h
new file mode 100644
index 0000000000000000000000000000000000000000..f20476ae84154ec5015847ffe068efdea280201f
--- /dev/null
+++ b/Control/PileUpComps/src/PileUpHashHelper.h
@@ -0,0 +1,54 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef PILEUPCOMPS_PILEUPHASHHELPER_H
+#define PILEUPCOMPS_PILEUPHASHHELPER_H
+
+/**
+    @file PileUpHashHelper.h
+    @brief A helper class to compute a hash of pile-up events
+    @author Tadej Novak
+*/
+
+#include <sstream>
+
+#include <uuid/uuid.h>
+
+#include <xAODEventInfo/EventInfo.h>
+
+class PileUpHashHelper
+{
+public:
+  PileUpHashHelper() {}
+
+  /// Add a plain string to the stream
+  void addToHashSource(const std::string &string);
+
+  /// Add subevents to the stream
+  void addToHashSource(const xAOD::EventInfo *eventInfo);
+
+  /// Clear the stream
+  void clearHashSource();
+
+  /// Get the current hash base
+  std::string hashSource() const { return m_stream.str(); }
+
+  /// Calculate the hash
+  void calculateHash(uuid_t &hash) const;
+
+  /// Convert uuid_t to xAOD::EventInfo::PileUpMixtureID
+  static xAOD::EventInfo::PileUpMixtureID uuidToPileUpMixtureId(const uuid_t &hash);
+
+  /// xAOD::EventInfo::PileUpMixtureID to uuid_t
+  static void pileUpMixtureIdToUuid(const xAOD::EventInfo::PileUpMixtureID &mixture,
+                                    uuid_t &hash);
+
+  /// Size of individual low/high bits in bytes
+  static const uint16_t PILEUP_SIZE_BYTES = 8;
+
+private:
+  std::stringstream m_stream;
+};
+
+#endif // PILEUPCOMPS_PILEUPHASHHELPER_H
diff --git a/Control/PileUpComps/test/PileUpHashHelper_test.cxx b/Control/PileUpComps/test/PileUpHashHelper_test.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..ec7b819a1b1f070b73fbfa7077f3f57502d513be
--- /dev/null
+++ b/Control/PileUpComps/test/PileUpHashHelper_test.cxx
@@ -0,0 +1,59 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+/// @author Tadej Novak
+
+// Google Test
+#include <gtest/gtest.h>
+
+// The class to test
+#include "PileUpHashHelper.h"
+
+namespace PileUpTesting
+{
+
+class PileUpHashHelper_test : public ::testing::Test {};
+
+TEST_F(PileUpHashHelper_test, empty_mixture) {
+  unsigned long long reference = 0;
+  xAOD::EventInfo::PileUpMixtureID test{};
+
+  ASSERT_EQ(reference, test.lowBits);
+  ASSERT_EQ(reference, test.highBits);
+}
+
+TEST_F(PileUpHashHelper_test, uuid_to_long) {
+  uuid_t source{'a','a','a','a','a','a','a','b','1','0','0','0','0','0','0','0'};
+
+  xAOD::EventInfo::PileUpMixtureID reference;
+  reference.lowBits = 7089054359331365217;
+  reference.highBits = 3472328296227680305;
+
+  xAOD::EventInfo::PileUpMixtureID test = PileUpHashHelper::uuidToPileUpMixtureId(source);
+
+  ASSERT_EQ(reference, test);
+  ASSERT_EQ(reference.lowBits, test.lowBits);
+  ASSERT_EQ(reference.highBits, test.highBits);
+}
+
+TEST_F(PileUpHashHelper_test, long_to_uuid) {
+  uuid_t reference{'a','a','a','a','a','a','a','b','1','0','0','0','0','0','0','0'};
+  uuid_t test{};
+
+  xAOD::EventInfo::PileUpMixtureID source;
+  source.lowBits = 7089054359331365217;
+  source.highBits = 3472328296227680305;
+
+  PileUpHashHelper::pileUpMixtureIdToUuid(source, test);
+
+  ASSERT_EQ(uuid_compare(reference, test), 0);
+}
+
+} // namespace PileUpTesting
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/Event/xAOD/xAODEventInfo/Root/EventInfoAuxContainer_v1.cxx b/Event/xAOD/xAODEventInfo/Root/EventInfoAuxContainer_v1.cxx
index 22f8bbcbcbf8b22ad2d9d83ea36834a206aade26..095d6e07a61a469b21cca0ed58cfd47640d841ae 100644
--- a/Event/xAOD/xAODEventInfo/Root/EventInfoAuxContainer_v1.cxx
+++ b/Event/xAOD/xAODEventInfo/Root/EventInfoAuxContainer_v1.cxx
@@ -49,6 +49,10 @@ namespace xAOD {
       AUX_VARIABLE( mcChannelNumber );
       AUX_VARIABLE( mcEventNumber );
       AUX_VARIABLE( mcEventWeights );
+      
+      // Pileup information:
+      AUX_VARIABLE( pileUpMixtureIDLowBits );
+      AUX_VARIABLE( pileUpMixtureIDHighBits );
    }
 
    /**
diff --git a/Event/xAOD/xAODEventInfo/Root/EventInfo_v1.cxx b/Event/xAOD/xAODEventInfo/Root/EventInfo_v1.cxx
index dcf950f390e2c2dcf997da62d6b088c2f63875e0..9fabf1a9c85a18a112a54110aa6511289f32563a 100644
--- a/Event/xAOD/xAODEventInfo/Root/EventInfo_v1.cxx
+++ b/Event/xAOD/xAODEventInfo/Root/EventInfo_v1.cxx
@@ -350,6 +350,37 @@ namespace xAOD {
    AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( EventInfo_v1, float,
                                          averageInteractionsPerCrossing,
                                          setAverageInteractionsPerCrossing )
+   
+   AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( EventInfo_v1, unsigned long long,
+                                         pileUpMixtureIDLowBits,
+                                         setPileUpMixtureIDLowBits )
+   AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( EventInfo_v1, unsigned long long,
+                                         pileUpMixtureIDHighBits,
+                                         setPileUpMixtureIDHighBits )
+
+   EventInfo_v1::PileUpMixtureID EventInfo_v1::pileUpMixtureID() const {
+
+      static const Accessor< unsigned long long > accLow( "pileUpMixtureIDLowBits" );
+      static const Accessor< unsigned long long > accHigh( "pileUpMixtureIDHighBits" );
+
+      PileUpMixtureID id{};
+
+      // We need to check if the values are actually stored
+      if ( accLow.isAvailable( *this ) && accHigh.isAvailable( *this ) ) {
+         id.lowBits = pileUpMixtureIDLowBits();
+         id.highBits = pileUpMixtureIDHighBits();
+      }
+
+      return id;
+
+   }
+
+   void EventInfo_v1::setPileUpMixtureID( const PileUpMixtureID& value ) {
+
+      setPileUpMixtureIDLowBits( value.lowBits );
+      setPileUpMixtureIDHighBits( value.highBits );
+
+   }
 
    EventInfo_v1::SubEvent::
    SubEvent( int16_t time, uint16_t index, PileUpType type,
@@ -966,4 +997,48 @@ namespace xAOD {
       return out;
    }
 
+   /// This operator is provided to make it convenient to print debug messages
+   /// including information about the PileUpMixtureID in hex.
+   ///
+   /// @param out The output stream to write PileUpMixtureID information to
+   /// @param id The PileUpMixtureID object to print information about
+   /// @returns The same output stream that the operator received
+   ///
+   std::ostream& operator<<( std::ostream &out,
+                             const xAOD::EventInfo_v1::PileUpMixtureID& id ) {
+
+       // Get the current state of the stream:
+       const char fillChar = out.fill();
+       const std::ios_base::fmtflags flags = out.flags();
+       const std::streamsize width = out.width();
+
+       // Do the printout:
+       out << std::hex << std::setw( 16 ) << std::setfill( '0' );
+       out << id.lowBits;
+       out << id.highBits;
+
+       // Restore the original state of the stream:
+       out.fill( fillChar );
+       out.flags( flags );
+       out.width( width );
+
+
+       // Return the stream:
+       return out;  
+   }
+
+   /// This operator is provided to make it convenient to compare two
+   /// instances of PileUpMixtureID directly.
+   ///
+   /// @param a The PileUpMixtureID object to compare
+   /// @param b The PileUpMixtureID object to compare
+   /// @returns Comparison result
+   ///
+   bool operator== ( const xAOD::EventInfo_v1::PileUpMixtureID& a,
+                     const xAOD::EventInfo_v1::PileUpMixtureID& b ) {
+
+       return a.lowBits == b.lowBits && a.highBits == b.highBits;
+
+   }
+
 } // namespace xAOD
diff --git a/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfoAuxContainer_v1.h b/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfoAuxContainer_v1.h
index d26545d105c7de9b167b87d3c2db68c3f999d846..cbae095f29c357c1103555d169d9081dad19f752 100644
--- a/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfoAuxContainer_v1.h
+++ b/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfoAuxContainer_v1.h
@@ -115,7 +115,11 @@ namespace xAOD {
       std::vector< std::vector< float > > mcEventWeights;
       /// @}
 
-
+      /// @name Pileup information
+      /// @{
+      std::vector< unsigned long long > pileUpMixtureIDLowBits;
+      std::vector< unsigned long long > pileUpMixtureIDHighBits;
+      /// @}
 
       /// Keep track of the event status flags.
       /// The set bits here correspond to the auxids of all unlocked
diff --git a/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfo_v1.h b/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfo_v1.h
index fde9e62af7e9dbe7a554360e15b78f3fc6cf2721..dbc7ee3fa74304ae1eaa36ee130ec11b2d30f183 100644
--- a/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfo_v1.h
+++ b/Event/xAOD/xAODEventInfo/xAODEventInfo/versions/EventInfo_v1.h
@@ -245,6 +245,27 @@ namespace xAOD {
       /// Set average interactions per crossing for all BCIDs
       void setAverageInteractionsPerCrossing( float value );
 
+      /// Unique pile-up mixture identifier definition
+      struct PileUpMixtureID {
+         unsigned long long lowBits{};
+         unsigned long long highBits{};
+      };
+
+      /// Unique pile-up mixture identifier
+      PileUpMixtureID pileUpMixtureID() const;
+      /// Set unique pile-up mixture identifier
+      void setPileUpMixtureID( const PileUpMixtureID &value );
+
+      /// Unique pile-up mixture identifier low bits
+      unsigned long long pileUpMixtureIDLowBits() const;
+      /// Set unique pile-up mixture identifier low bits
+      void setPileUpMixtureIDLowBits( unsigned long long value );
+
+      /// Unique pile-up mixture identifier high bits
+      unsigned long long pileUpMixtureIDHighBits() const;
+      /// Set unique pile-up mixture identifier high bits
+      void setPileUpMixtureIDHighBits( unsigned long long value );
+
       /// Enumerator describing the types of pileup events
       enum PileUpType {
          Unknown     = 99, ///< Type not known/specified
@@ -498,8 +519,11 @@ namespace xAOD {
 
    }; // class EventInfo_v1
 
-   /// A helper operator to be able to print debug messages easily
+   /// A helper operators to be able to print debug messages easily
    std::ostream& operator<< ( std::ostream& out, const xAOD::EventInfo_v1& ei );
+   std::ostream& operator<< ( std::ostream& out, const xAOD::EventInfo_v1::PileUpMixtureID& id );
+   /// PileUpMixtureID comparison helper operator
+   bool operator== ( const xAOD::EventInfo_v1::PileUpMixtureID& a, const xAOD::EventInfo_v1::PileUpMixtureID& b );
 
 } // namespace xAOD
 
diff --git a/Tools/PROCTools/python/RunTier0Tests.py b/Tools/PROCTools/python/RunTier0Tests.py
index 9909377f77b0e443ecb552efdde15104584dbd37..4e461c9b5878626ca6ea2ec050135d88f76aeaf0 100755
--- a/Tools/PROCTools/python/RunTier0Tests.py
+++ b/Tools/PROCTools/python/RunTier0Tests.py
@@ -12,7 +12,9 @@ import time
 import uuid
 import logging
 import glob
-from PROCTools.RunTier0TestsTools import ciRefFileMap
+
+from PROCTools.RunTier0TestsTools import ciRefFileMap, \
+    SimInput, OverlayInputHits, OverlayInputBkg
 
 ### Setup global logging
 logging.basicConfig(level=logging.INFO,
@@ -709,9 +711,8 @@ def main():
 #        mysetup=mysetup+",builds"
         logging.info("------------------ Run Athena q-test jobs---------------"                )
 
-        sim_input_file = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/SimCoreTests/ttbar_muplusjets-pythia6-7000.evgen.pool.root" # For sim test
-        overlay_hit_f  = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/mc16_13TeV.424000.ParticleGun_single_mu_Pt100.simul.HITS.e3580_s3126/HITS.11330296._000376.pool.root.1" # For overlay test
-        overlay_bkg_f  = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/RDO.merged-pileup.100events.pool.root" # For overlay test
+        release = os.environ['AtlasVersion'][0:4]
+        OverlayInputBkgFormatted = OverlayInputBkg.format(release, ciRefFileMap['overlay-bkg-' + release])
 
         if RunFast:
             for qtest in qTestsToRun:
@@ -719,18 +720,18 @@ def main():
 
                 def mycleanqtest(q=q):
                     if RunSim:
-                        RunCleanSTest(q,sim_input_file,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
+                        RunCleanSTest(q,SimInput,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
                     elif RunOverlay:
-                        RunCleanOTest(q,overlay_hit_f,overlay_bkg_f,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
+                        RunCleanOTest(q,OverlayInputHits,OverlayInputBkgFormatted,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
                     else:   
                         RunCleanQTest(q,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName,doR2A=r2aMode,trigConfig=trigRun2Config)
                     pass
 
                 def mypatchedqtest(q=q):
                     if RunSim:
-                        RunPatchedSTest(q,sim_input_file,mypwd,cleanSetup,extraArg)
+                        RunPatchedSTest(q,SimInput,mypwd,cleanSetup,extraArg)
                     elif RunOverlay:
-                        RunPatchedOTest(q,overlay_hit_f,overlay_bkg_f,mypwd,cleanSetup,extraArg)
+                        RunPatchedOTest(q,OverlayInputHits,OverlayInputBkgFormatted,mypwd,cleanSetup,extraArg)
                     else:
                         RunPatchedQTest(q,mypwd,mysetup,extraArg, doR2A=r2aMode, trigConfig=trigRun2Config)
                     pass
@@ -750,9 +751,9 @@ def main():
 
                 def mypatchedqtest(q=q):
                     if RunSim:
-                        RunPatchedSTest(q,sim_input_file,mypwd,cleanSetup,extraArg, nosetup=ciMode)
+                        RunPatchedSTest(q,SimInput,mypwd,cleanSetup,extraArg, nosetup=ciMode)
                     elif RunOverlay:
-                        RunPatchedOTest(q,overlay_hit_f,overlay_bkg_f,mypwd,cleanSetup,extraArg, nosetup=ciMode)
+                        RunPatchedOTest(q,OverlayInputHits,OverlayInputBkgFormatted,mypwd,cleanSetup,extraArg, nosetup=ciMode)
                     else:
                         RunPatchedQTest(q,mypwd,mysetup,extraArg, doR2A=r2aMode, trigConfig=trigRun2Config, nosetup=ciMode)
                     pass
@@ -771,18 +772,18 @@ def main():
 
                 def mycleanqtest(q=q):
                     if RunSim:
-                        RunCleanSTest(q,sim_input_file,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
+                        RunCleanSTest(q,SimInput,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
                     elif RunOverlay:
-                        RunCleanOTest(q,overlay_hit_f,overlay_bkg_f,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
+                        RunCleanOTest(q,OverlayInputHits,OverlayInputBkgFormatted,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName)
                     else:   
                         RunCleanQTest(q,mypwd,cleanSetup,extraArg,CleanRunHeadDir,UniqName,doR2A=r2aMode,trigConfig=trigRun2Config)
                     pass
                 
                 def mypatchedqtest(q=q):
                     if RunSim:
-                        RunPatchedSTest(q,sim_input_file,mypwd,cleanSetup,extraArg)
+                        RunPatchedSTest(q,SimInput,mypwd,cleanSetup,extraArg)
                     elif RunOverlay:
-                        RunPatchedOTest(q,overlay_hit_f,overlay_bkg_f,mypwd,cleanSetup,extraArg)
+                        RunPatchedOTest(q,OverlayInputHits,OverlayInputBkgFormatted,mypwd,cleanSetup,extraArg)
                     else:   
                         RunPatchedQTest(q,mypwd,mysetup,extraArg,doR2A=r2aMode,trigConfig=trigRun2Config)
                     pass
diff --git a/Tools/PROCTools/python/RunTier0TestsTools.py b/Tools/PROCTools/python/RunTier0TestsTools.py
index 467e7d7e23b2e6f6c06d869fef2a42d6c609be6a..7a5b1b65d86483837871672bbd4560fea7924c36 100644
--- a/Tools/PROCTools/python/RunTier0TestsTools.py
+++ b/Tools/PROCTools/python/RunTier0TestsTools.py
@@ -23,6 +23,19 @@ ciRefFileMap = {
                 's3126-21.9'           : 'v1',
                 's3126-22.0'           : 'v3',
                 # OverlayTier0Test_required-test
-                'overlay-d1498-21.0'   : 'v1',
-                'overlay-d1498-22.0'   : 'v11',
+                'overlay-d1498-21.0'   : 'v2',
+                'overlay-d1498-22.0'   : 'v12',
+                'overlay-bkg-21.0'     : 'v1',
+                'overlay-bkg-22.0'     : 'v1',
                }
+
+
+#####
+# CI special input files
+#####
+# Simulation tests
+SimInput = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/SimCoreTests/ttbar_muplusjets-pythia6-7000.evgen.pool.root"
+
+# Overlay tests
+OverlayInputHits = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/mc16_13TeV.424000.ParticleGun_single_mu_Pt100.simul.HITS.e3580_s3126/HITS.11330296._000376.pool.root.1"
+OverlayInputBkg = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/{}/{}/RDO.merged-pileup.100events.pool.root"