diff --git a/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.py b/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.py
index 5ac30ff57c8f08e102f61ebfbbb06323a28c26ea..1cdcf271c1146395156bc46bc1b76cb4a54c0c25 100644
--- a/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.py
+++ b/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.py
@@ -63,29 +63,29 @@ class CaloCell_ID:
 # barec, samp, reg, ieta, iphi, e, time, exp0
 hits = [
     ['LArHitEMB', CaloCell_ID.LAREM,
-     [[( 1, 1, 0, 10,  23), 10.0*GeV, 123, ( 10899.3018,  10889.9756,        None,        None)],
-      [(-1, 2, 1,  0, 123),  0.1*GeV,  31, (    93.1610,     87.4583,     93.1610,     81.2640)],
-      [( 1, 3, 0, 12,  41),   99*GeV,  12, (107903.0859, 107907.3828,        None,        None)],
-      [(-1, 0, 0, 54,   9),    2*GeV,  14, (  8000.0,      7995.4590,        None,        None)],
+     [[( 1, 1, 0, 10,  23), 10.0*GeV, 123, ( 10899.3018,  10888.7510,        None,        None)],
+      [(-1, 2, 1,  0, 123),  0.1*GeV,  31, (    93.1610,    103.9979,     93.1610,     84.48318)],
+      [( 1, 3, 0, 12,  41),   99*GeV,  12, (107903.0859, 107953.2734,        None,        None)],
+      [(-1, 0, 0, 54,   9),    2*GeV,  14, (  8000.0,      7972.3979,        None,        None)],
       ]],
     ['LArHitEMEC', CaloCell_ID.LAREM,
-     [[( 2, 0, 0,  3,  24),    5*GeV,  16, ( 59998.8047,  60255.3203,  59998.8047,  59740.0078)],
-      [(-2, 1, 2, 42,  27),   50*GeV,  24, (105214.4219, 105043.5859, 105214.4219, 105389.3906)],
-      [( 2, 2, 1, 17,  37),  100*GeV,  27, (201278.1094, 201201.7656,        None,        None)],
-      [(-2, 3, 0, 12,  42),   75*GeV,  46, (144681.5156, 144661.8906,        None,        None)],
-      [( 3, 1, 0,  3,  21),   25*GeV,  53, ( 60467.5352,  60441.5586,        None,        None)],
-      [(-3, 2, 0,  5,  13),  125*GeV,  44, (273080.7813, 272520.4063,        None,        None)]
+     [[( 2, 0, 0,  3,  24),    5*GeV,  16, ( 59998.8047,  59919.6758,  59998.8047,  60117.71875)],
+      [(-2, 1, 2, 42,  27),   50*GeV,  24, (105214.4219, 105278.6797, 105214.4219, 105309.0859)],
+      [( 2, 2, 1, 17,  37),  100*GeV,  27, (201278.1094, 201371.75,          None,        None)],
+      [(-2, 3, 0, 12,  42),   75*GeV,  46, (144681.5156, 144700.2813,        None,        None)],
+      [( 3, 1, 0,  3,  21),   25*GeV,  53, ( 60467.5352,  60539.375,         None,        None)],
+      [(-3, 2, 0,  5,  13),  125*GeV,  44, (273080.7813, 273192.8125,        None,        None)]
       ]],
     ['LArHitHEC', CaloCell_ID.LARHEC,
-     [[( 2, 0, 0,  3,  54),   23*GeV,  54, (102908.2734, 102822.9531,        None,        None)],
-      [(-2, 1, 1,  1,  15),  157*GeV,  87, (702460.8125, 703196.75,   702460.8125, 701666.6875)],
-      [( 2, 2, 0,  6,  37),   87*GeV,  65, (778523.5,    778306.9375,        None,        None)],
-      [(-2, 3, 1,  2,  14),   97*GeV,  63, (868008.9375, 867043.5625, 868008.9375, 868216.4375)],
+     [[( 2, 0, 0,  3,  54),   23*GeV,  54, (102908.2734, 103014.1016,        None,        None)],
+      [(-2, 1, 1,  1,  15),  157*GeV,  87, (702460.8125, 702207.5625, 702460.8125, 700990.4375)],
+      [( 2, 2, 0,  6,  37),   87*GeV,  65, (778523.5,    778360.3125,        None,        None)],
+      [(-2, 3, 1,  2,  14),   97*GeV,  63, (868008.9375, 867810.0625, 868008.9375, 868528.9375)],
       ]],
     ['LArHitFCAL', CaloCell_ID.LARFCAL,
-     [[( 2, 1, 0, 33,  13),   34*GeV,  51, (421496.34375, 422000.4688,       None,        None)],
-      [(-2, 2, 0, 16,  11),   26*GeV,  45, (439932.34375, 439158.3125,       None,        None)],
-      [( 2, 3, 0,  9,   3),   21*GeV,  41, (288026.34375, 288254.5313,       None,        None)],
+     [[( 2, 1, 0, 33,  13),   34*GeV,  51, (421496.34375, 421274.5938,       None,        None)],
+      [(-2, 2, 0, 16,  11),   26*GeV,  45, (439932.34375, 440415.5625,       None,        None)],
+      [( 2, 3, 0,  9,   3),   21*GeV,  41, (288026.34375, 286402.875,        None,        None)],
       ]],
     ]
 
diff --git a/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.ref b/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.ref
index 72fcf5d1f6eff9c8497206a36d337dd181dad363..17ef0a2c969d8056256d6054edf703eba512d9d2 100644
--- a/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.ref
+++ b/LArCalorimeter/LArCellRec/share/LArCellBuilderFromLArHitTool_test.ref
@@ -1,14 +1,14 @@
-Sat Sep  8 00:57:07 CEST 2018
+Wed Sep 19 20:10:31 CEST 2018
 Preloading tcmalloc_minimal.so
 Py:Athena            INFO including file "AthenaCommon/Preparation.py"
-Py:Athena            INFO using release [AthenaWorkDir-22.0.1] [x86_64-slc6-gcc7-dbg] [atlas-work3/594567d675b] -- built on [2018-09-07T1739]
+Py:Athena            INFO using release [AthenaWorkDir-22.0.1] [x86_64-slc6-gcc7-dbg] [atlas-work3/06b3a31a9e0] -- built on [2018-09-19T1348]
 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 "LArCellRec/LArCellBuilderFromLArHitTool_test.py"
 [?1034hSetGeometryVersion.py obtained major release version 22
 Py:Athena            INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py"
-Py:ConfigurableDb    INFO Read module info for 5509 configurables from 51 genConfDb files
+Py:ConfigurableDb    INFO Read module info for 5505 configurables from 61 genConfDb files
 Py:ConfigurableDb    INFO No duplicates have been found: that's good !
 EventInfoMgtInit: Got release version  Athena-22.0.1
 Py:IOVDbSvc.CondDB    INFO Setting up conditions DB access to instance OFLP200
@@ -39,7 +39,7 @@ ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to leve
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
                                                    Welcome to ApplicationMgr (GaudiCoreSvc v30r3)
-                                          running on lxplus027.cern.ch on Sat Sep  8 00:57:33 2018
+                                          running on lxplus007.cern.ch on Wed Sep 19 20:10:50 2018
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : AthenaServices
 ApplicationMgr       INFO Application Manager Configured successfully
@@ -47,7 +47,7 @@ ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to leve
 StatusCodeSvc        INFO initialize
 AthDictLoaderSvc     INFO in initialize...
 AthDictLoaderSvc     INFO acquired Dso-registry
-ClassIDSvc           INFO  getRegistryEntries: read 6897 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 3219 CLIDRegistry entries for module ALL
 CoreDumpSvc          INFO install f-a-t-a-l handler... (flag = -1)
 CoreDumpSvc          INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
 MetaDataSvc          INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00
@@ -56,8 +56,8 @@ PoolSvc              INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x
 PoolSvc              INFO Set connectionsvc retry/timeout/IDLE timeout to  'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled
 PoolSvc              INFO Frontier compression level set to 5
 DBReplicaSvc         INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128) will be considered for COOL data
-DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/dbreplica.config
-DBReplicaSvc         INFO Total of 10 servers found for host lxplus027.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/dbreplica.config
+DBReplicaSvc         INFO Total of 10 servers found for host lxplus007.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
 PoolSvc              INFO Successfully setup replica sorting algorithm
 PoolSvc              INFO Setting up APR FileCatalog and Streams
 PoolSvc           WARNING Unable to locate catalog for prfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables
@@ -80,7 +80,7 @@ IOVDbSvc             INFO preLoadAddresses: Removing folder /TagInfo. It should
 IOVDbSvc             INFO Opening COOL connection for COOLOFL_LAR/OFLP200
 IOVSvc               INFO No IOVSvcTool associated with store "StoreGateSvc"
 IOVSvcTool           INFO IOVRanges will be checked at every Event
-ClassIDSvc           INFO  getRegistryEntries: read 1537 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 2071 CLIDRegistry entries for module ALL
 IOVDbSvc             INFO Opening COOL connection for COOLOFL_CALO/OFLP200
 IOVDbSvc             INFO Disconnecting from COOLOFL_LAR/OFLP200
 IOVDbSvc             INFO Disconnecting from COOLOFL_CALO/OFLP200
@@ -107,9 +107,9 @@ IOVDbSvc             INFO Added taginfo remove for /LAR/ElecCalibMC/Shape
 IOVDbSvc             INFO Added taginfo remove for /LAR/Identifier/LArTTCellMapAtlas
 IOVDbSvc             INFO Added taginfo remove for /LAR/ElecCalibMC/fSampl
 IOVDbSvc             INFO Added taginfo remove for /LAR/ElecCalibMC/uA2MeV
-ClassIDSvc           INFO  getRegistryEntries: read 17 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 4298 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 9 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 22 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 4897 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 18 CLIDRegistry entries for module ALL
 DetDescrCnvSvc       INFO  initializing 
 DetDescrCnvSvc       INFO Found DetectorStore service
 DetDescrCnvSvc       INFO  filling proxies for detector managers 
@@ -168,7 +168,7 @@ BarrelConstruction   INFO   Use sagging in geometry  ? 0
   multi-layered version of absorbers activated, mlabs == 1
 ================================================
 EventPersistenc...   INFO Added successfully Conversion service:DetDescrCnvSvc
-ClassIDSvc           INFO  getRegistryEntries: read 1931 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 3150 CLIDRegistry entries for module ALL
 CaloIDHelper_ID...   INFO in createObj: creating a TileTBID helper object in the detector store
 IdDictDetDescrCnv    INFO in initialize
 IdDictDetDescrCnv    INFO in createObj: creating a IdDictManager object in the detector store
@@ -197,7 +197,7 @@ EndcapDMConstru...   INFO Start building EC electronics geometry
   multi-layered version of absorbers activated, mlabs == 1
 ================================================
 EndcapDMConstru...   INFO Start building EC electronics geometry
-GeoModelSvc          INFO GeoModelSvc.LArDetectorToolNV	 SZ= 29508Kb 	 Time = 1.77S
+GeoModelSvc          INFO GeoModelSvc.LArDetectorToolNV	 SZ= 29456Kb 	 Time = 1.43S
 ClassIDSvc           INFO  getRegistryEntries: read 213 CLIDRegistry entries for module ALL
 ClassIDSvc           INFO  getRegistryEntries: read 65 CLIDRegistry entries for module ALL
 AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
@@ -264,7 +264,7 @@ PyComponentMgr       INFO Initializing PyComponentMgr...
 testalg1             INFO Initializing testalg1...
 mgrClassIDSvc           INFO  getRegistryEntries: read 323 CLIDRegistry entries for module ALL
 CaloMgrDetDescrCnv   INFO in createObj: creating a Calo Detector Manager object in the detector store
-ClassIDSvc           INFO  getRegistryEntries: read 159 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 186 CLIDRegistry entries for module ALL
 CaloIDHelper_ID...   INFO in createObj: creating a CaloCell_ID helper object in the detector store
 CaloIDHelper_ID...   INFO in createObj: creating a LArEM_ID helper object in the detector store
 AtlasDetectorID      INFO initialize_from_dictionary - OK
@@ -272,15 +272,15 @@ CaloIDHelper_ID...   INFO in createObj: creating a LArHEC_ID helper object in th
 AtlasDetectorID      INFO initialize_from_dictionary - OK
 CaloIDHelper_ID...   INFO in createObj: creating a LArFCAL_ID helper object in the detector store
 AtlasDetectorID      INFO initialize_from_dictionary - OK
-LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCal2DNeighbors-April2011.txt
-LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCal3DNeighborsNext-April2011.txt
-LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCal3DNeighborsPrev-April2011.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCal2DNeighbors-April2011.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCal3DNeighborsNext-April2011.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCal3DNeighborsPrev-April2011.txt
 CaloIDHelper_ID...   INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store
 AtlasDetectorID      INFO initialize_from_dictionary - OK
 LArMiniFCAL_ID       INFO  initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID.
 CaloIDHelper_ID...   INFO in createObj: creating a TileID helper object in the detector store
 AtlasDetectorID      INFO initialize_from_dictionary - OK
-TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/TileNeighbour_reduced.txt
+TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/TileNeighbour_reduced.txt
 AtlasDetectorID      INFO initialize_from_dictionary - OK
 CaloIdMgrDetDes...   INFO in createObj: creating a CaloDescrManager object in the detector store
 CaloIDHelper_ID...   INFO in createObj: creating a CaloDM_ID helper object in the detector store
@@ -299,28 +299,28 @@ CaloIDHelper_ID...   INFO in createObj: creating a LArHEC_SuperCell_ID helper ob
 AtlasDetectorID      INFO initialize_from_dictionary - OK
 CaloIDHelper_ID...   INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store
 AtlasDetectorID      INFO initialize_from_dictionary - OK
-LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCalSuperCells2DNeighborsNew-April2014.txt
-LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCalSuperCells3DNeighborsNextNew-April2014.txt
-LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCalSuperCells2DNeighborsNew-April2014.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCalSuperCells3DNeighborsNextNew-April2014.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt
 CaloIDHelper_ID...   INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store
 AtlasDetectorID      INFO initialize_from_dictionary - OK
-TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-06T2111/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/TileSuperCellNeighbour.txt
+TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-09-18T2112/Athena/22.0.1/InstallArea/x86_64-slc6-gcc7-dbg/share/TileSuperCellNeighbour.txt
 AtlasDetectorID      INFO initialize_from_dictionary - OK
 CaloIdMgrDetDes...   INFO  Finished 
 CaloIdMgrDetDes...   INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv 
-DetectorStore_ImplWARNING retrieve(default): No valid proxy for default object 
+DetectorStore     WARNING retrieve(default): No valid proxy for default object 
  of type TileDetDescrManager(CLID 2941)
 CaloMgrDetDescrCnvWARNING Could not get the TileDetectorManager. No Calo Elements will be built for Tile
- <ROOT.CaloDetDescrManager object at 0x28a7e680>
-ClassIDSvc           INFO  getRegistryEntries: read 3940 CLIDRegistry entries for module ALL
+ <ROOT.CaloDetDescrManager object at 0x1c439640>
+ClassIDSvc           INFO  getRegistryEntries: read 4019 CLIDRegistry entries for module ALL
 ToolSvc.tool1em      INFO  No threshold on hit energy 
 ToolSvc.tool1em      INFO THRESHOLD CHOICE : No Threshold !
 ToolSvc.CaloNoi...   INFO CaloNoiseTool called ToolSvc.CaloNoiseToolDefault initialize() begin
 LArOnlineIDDetD...   INFO in createObj: creating a LArOnlineID helper object in the detector store
 LArOnlineID          INFO initialize_from_dictionary
 AtlasDetectorID      INFO initialize_from_dictionary - OK
-ClassIDSvc           INFO  getRegistryEntries: read 1076 CLIDRegistry entries for module ALL
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for LArCablingService[0x2e7f6a00]+7f71dfeadca4 bound to AthenaAttributeList[/LAR/Identifier/OnOffIdMap]
+ClassIDSvc           INFO  getRegistryEntries: read 2354 CLIDRegistry entries for module ALL
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for LArCablingService[0x2adee800]+7f8bdbe6a714 bound to AthenaAttributeList[/LAR/Identifier/OnOffIdMap]
 ToolSvc.LArCabl...   INFO Successfully installed callback on folder/LAR/Identifier/OnOffIdMap
 ToolSvc.LArCabl...   INFO Successfully installed callback on folder/LAR/Identifier/CalibIdMap
 ToolSvc.LArCabl...   INFO Successfully installed callback on folder/LAR/Identifier/FebRodMap
@@ -330,7 +330,7 @@ ToolSvc.LArADC2...   INFO Registered callback for key: LArDAC2uA
 ToolSvc.LArADC2...   INFO Registered callback for key: LAruA2MeV
 ToolSvc.LArADC2...   INFO Registered callback for key: LArMphysOverMcal
 ToolSvc.LArADC2...   INFO Registered callback for key: LArHVScaleCorr
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for LArMCSymTool[0x2e7f9200]+189 bound to /LAR/Identifier/OnOffIdMap
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for LArMCSymTool[0x2adede00]+189 bound to /LAR/Identifier/CalibIdMap
 ClassIDSvc           INFO  getRegistryEntries: read 53 CLIDRegistry entries for module ALL
 ToolSvc.LArAuto...   INFO Registered callback for key: LArShape
 ToolSvc.LArAuto...   INFO Registered callback for key: LArAutoCorr
@@ -338,19 +338,19 @@ ToolSvc.LArOFCT...   INFO Registered callback for key: LArShape
 ToolSvc.LArOFCT...   INFO Registered callback for key: LArNoise
 ToolSvc.LArOFCT...   INFO Registered callback for LArOFCTool/LArAutoCorrTotalTool
 ToolSvc.CaloNoi...   INFO Will cache electronic noise
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x3014ff18]+191 bound to LArNoiseMC[LArNoise]
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x2d2d9f18]+191 bound to LArNoiseMC[LArNoise]
 ToolSvc.CaloNoi...   INFO Registered callback for key: LArNoise
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x3014ff18]+191 bound to LArAutoCorrMC[LArAutoCorr]
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x2d2d9f18]+191 bound to LArAutoCorrMC[LArAutoCorr]
 ToolSvc.CaloNoi...   INFO Registered callback for key: LArAutoCorr
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x3014ff18]+191 bound to LArShape32MC[LArShape]
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x2d2d9f18]+191 bound to LArShape32MC[LArShape]
 ToolSvc.CaloNoi...   INFO Registered callback for key: LArShape
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x3014ff18]+191 bound to LArfSamplMC[LArfSampl]
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x2d2d9f18]+191 bound to LArfSamplMC[LArfSampl]
 ToolSvc.CaloNoi...   INFO Registered callback for key: LArfSampl
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x3014ff18]+191 bound to LArMinBiasMC[LArMinBias]
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x2d2d9f18]+191 bound to LArMinBiasMC[LArMinBias]
 ToolSvc.CaloNoi...   INFO Registered callback for key: LArMinBias
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x3014ff18]+191 bound to LAruA2MeV
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x2d2d9f18]+191 bound to LAruA2MeV
 ToolSvc.CaloNoi...   INFO Registered callbacks for LArADC2MeVTool -> CaloNoiseTool
-IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x3014ff18]+191 bound to LArAutoCorr
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for CaloNoiseTool[0x2d2d9f18]+191 bound to LArShape
 ToolSvc.CaloNoi...   INFO Registered callbacks for LArOFCTool -> CaloNoiseTool
 ToolSvc.CaloNoi...   INFO CaloNoiseTool initialize() end
 ToolSvc.tool1em      INFO  no noise selected 
@@ -375,9 +375,6 @@ ToolSvc.tool2fcal    INFO  no noise selected
 ToolSvc.tool3em      INFO  No threshold on hit energy 
 ToolSvc.tool3em      INFO THRESHOLD CHOICE : No Threshold !
 ToolSvc.tool3em      INFO  Noise selected (1 0)
-AtRndmGenSvc         INFO Initializing AtRndmGenSvc - package version RngComps-00-00-00
- INITIALISING RANDOM NUMBER STREAMS. 
-AtRndmGenSvc         INFO will be reseeded for every event
 ClassIDSvc           INFO  getRegistryEntries: read 268 CLIDRegistry entries for module ALL
 ToolSvc.tool3hec     INFO  No threshold on hit energy 
 ToolSvc.tool3hec     INFO THRESHOLD CHOICE : No Threshold !
@@ -610,10 +607,10 @@ xAODMaker::Even...WARNING xAOD::EventInfo with key "EventInfo" is already in Sto
 ClassIDSvc           INFO  getRegistryEntries: read 2261 CLIDRegistry entries for module ALL
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #1, run #1 1 events processed so far  <<<===
 /cvmfs/atlas-co...   INFO Database being retired...
-Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20
-/cvmfs/atlas-co...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A
 /cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20
+/cvmfs/atlas-co...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 180A4AF2-F47E-DB11-9E8F-000E0C4DEA2D
 Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
 AthenaEventLoopMgr   INFO   ===>>>  start processing event #2, run #1 1 events processed so far  <<<===
@@ -656,9 +653,9 @@ CondInputLoader      INFO   CondObj  ( 'LArShape32MC' , 'ConditionStore+LArShape
 CondInputLoader      INFO   CondObj  ( 'LArfSamplMC' , 'ConditionStore+LArfSampl' )  is still valid at [1,3,t:4294967295,l:3,b:4294967295]
 CondInputLoader      INFO   CondObj  ( 'LAruA2MeVMC' , 'ConditionStore+LAruA2MeV' )  is still valid at [1,3,t:4294967295,l:3,b:4294967295]
 LArCalibLineMap...WARNING Found valid write handle
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3em, Seed1 =  871957575, Seed2 = 1941611386
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3fcal, Seed1 =  1039951719, Seed2 = 1349891211
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3hec, Seed1 =  627311549, Seed2 = 472566319
+AthRNGSvc            INFO Creating engine ToolSvc.tool3em/ToolSvc.tool3em
+AthRNGSvc            INFO Creating engine ToolSvc.tool3hec/ToolSvc.tool3hec
+AthRNGSvc            INFO Creating engine ToolSvc.tool3fcal/ToolSvc.tool3fcal
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #3, run #1 3 events processed so far  <<<===
 AthenaEventLoopMgr   INFO   ===>>>  start processing event #4, run #1 3 events processed so far  <<<===
 CondInputLoader      INFO   CondObj  ( 'AthenaAttributeList' , 'ConditionStore+/LAR/BadChannels/MissingFEBs' )  is still valid at [1,4,t:4294967295,l:4,b:4294967295]
@@ -683,9 +680,6 @@ ClassIDSvc           INFO  getRegistryEntries: read 65 CLIDRegistry entries for
 ToolSvc.tool4em   WARNING  windows not reimplemented yet
 ToolSvc.tool4hec  WARNING  windows not reimplemented yet
 ToolSvc.tool4fcal WARNING  windows not reimplemented yet
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3em, Seed1 =  816824393, Seed2 = 1152411412
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3fcal, Seed1 =  1031946339, Seed2 = 791083656
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3hec, Seed1 =  517234067, Seed2 = 668203729
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #4, run #1 4 events processed so far  <<<===
 AthenaEventLoopMgr   INFO   ===>>>  start processing event #5, run #1 4 events processed so far  <<<===
 CondInputLoader      INFO   CondObj  ( 'AthenaAttributeList' , 'ConditionStore+/LAR/BadChannels/MissingFEBs' )  is still valid at [1,5,t:4294967295,l:5,b:4294967295]
@@ -706,74 +700,70 @@ CondInputLoader      INFO   CondObj  ( 'LArShape32MC' , 'ConditionStore+LArShape
 CondInputLoader      INFO   CondObj  ( 'LArfSamplMC' , 'ConditionStore+LArfSampl' )  is still valid at [1,5,t:4294967295,l:5,b:4294967295]
 CondInputLoader      INFO   CondObj  ( 'LAruA2MeVMC' , 'ConditionStore+LAruA2MeV' )  is still valid at [1,5,t:4294967295,l:5,b:4294967295]
 LArCalibLineMap...WARNING Found valid write handle
+AthRNGSvc            INFO Creating engine ToolSvc.tool5em/ToolSvc.tool5em
 ToolSvc.tool5em   WARNING  windows not reimplemented yet
+AthRNGSvc            INFO Creating engine ToolSvc.tool5hec/ToolSvc.tool5hec
 ToolSvc.tool5hec  WARNING  windows not reimplemented yet
+AthRNGSvc            INFO Creating engine ToolSvc.tool5fcal/ToolSvc.tool5fcal
 ToolSvc.tool5fcal WARNING  windows not reimplemented yet
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3em, Seed1 =  1340142741, Seed2 = 1416978076
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3fcal, Seed1 =  1751137712, Seed2 = 914837991
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool3hec, Seed1 =  1846905953, Seed2 = 861268491
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool5em, Seed1 =  1400257506, Seed2 = 441023122
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool5fcal, Seed1 =  1155227556, Seed2 = 1661577989
-AtRndmGenSvc         INFO  Stream =  ToolSvc.tool5hec, Seed1 =  449972764, Seed2 = 2120794177
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #5, run #1 5 events processed so far  <<<===
 /cvmfs/atlas-co...   INFO Database being retired...
+/cvmfs/atlas-co...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] D27D07D4-C135-E011-84A9-003048F0E01E
 /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...
 /cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] F4885664-6C4D-DF11-A94A-00304867340C
 /cvmfs/atlas-co...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 445FAD9A-5DB3-E14A-81DB-BA6244602734
 /cvmfs/atlas-co...   INFO Database being retired...
 /cvmfs/atlas-co...   INFO Database being retired...
-/cvmfs/atlas-co...   INFO Database being retired...
-Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] F4885664-6C4D-DF11-A94A-00304867340C
 Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
 ApplicationMgr       INFO Application Manager Stopped successfully
 IncidentProcAlg1     INFO Finalize
 CondInputLoader      INFO Finalizing CondInputLoader...
 testalg1             INFO Finalizing testalg1...
 IncidentProcAlg2     INFO Finalize
-AtRndmGenSvc         INFO  FINALISING 
 PyComponentMgr       INFO Finalizing PyComponentMgr...
 IdDictDetDescrCnv    INFO in finalize
 IOVDbSvc             INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 ((     0.23 ))s
-IOVDbSvc             INFO Folder /LAR/BadChannels/BadChannels (AttrListColl) db-read 1/1 objs/chan/bytes 0/8/0 ((     0.07 ))s
-IOVDbSvc             INFO Folder /LAR/BadChannels/MissingFEBs (AttrList) db-read 1/1 objs/chan/bytes 1/1/16 ((     0.05 ))s
-IOVDbSvc             INFO Folder /LAR/Identifier/CalibIdMap (AttrList) db-read 1/2 objs/chan/bytes 1/1/1520148 ((     0.17 ))s
-IOVDbSvc             INFO Folder /LAR/Identifier/FebRodMap (AttrList) db-read 1/2 objs/chan/bytes 1/1/6100 ((     0.18 ))s
-IOVDbSvc             INFO Folder /LAR/Identifier/OnOffIdMap (AttrList) db-read 1/2 objs/chan/bytes 1/1/780292 ((     0.47 ))s
+IOVDbSvc             INFO Folder /LAR/BadChannels/BadChannels (AttrListColl) db-read 1/1 objs/chan/bytes 0/8/0 ((     0.04 ))s
+IOVDbSvc             INFO Folder /LAR/BadChannels/MissingFEBs (AttrList) db-read 1/1 objs/chan/bytes 1/1/16 ((     0.03 ))s
+IOVDbSvc             INFO Folder /LAR/Identifier/CalibIdMap (AttrList) db-read 1/2 objs/chan/bytes 1/1/1520148 ((     0.02 ))s
+IOVDbSvc             INFO Folder /LAR/Identifier/FebRodMap (AttrList) db-read 1/2 objs/chan/bytes 1/1/6100 ((     0.02 ))s
+IOVDbSvc             INFO Folder /LAR/Identifier/OnOffIdMap (AttrList) db-read 1/2 objs/chan/bytes 1/1/780292 ((     0.08 ))s
 IOVDbSvc             INFO Folder /CALO/Ofl/Identifier/CaloTTOnAttrIdMapAtlas (PoolRef) db-read 0/0 objs/chan/bytes 0/1/0 ((     0.00 ))s
 IOVDbSvc             INFO Folder /CALO/Ofl/Identifier/CaloTTOnOffIdMapAtlas (PoolRef) db-read 0/0 objs/chan/bytes 0/1/0 ((     0.00 ))s
 IOVDbSvc             INFO Folder /CALO/Ofl/Identifier/CaloTTPpmRxIdMapAtlas (PoolRef) db-read 0/0 objs/chan/bytes 0/1/0 ((     0.00 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/AutoCorr (PoolColl) db-read 1/2 objs/chan/bytes 3/3/486 ((     0.59 ))s
-IOVDbSvc             INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 ((     0.46 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/DAC2uA (PoolColl) db-read 1/2 objs/chan/bytes 1/1/170 ((     0.51 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/HVScaleCorr (PoolColl) db-read 1/2 objs/chan/bytes 12/12/1980 ((     0.60 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/MinBias (PoolColl) db-read 1/2 objs/chan/bytes 1/1/174 ((     0.58 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/MinBiasAverage (PoolColl) db-read 1/1 objs/chan/bytes 1/1/181 ((     0.53 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/AutoCorr (PoolColl) db-read 1/2 objs/chan/bytes 3/3/486 ((     0.58 ))s
+IOVDbSvc             INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 ((     0.50 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/DAC2uA (PoolColl) db-read 1/2 objs/chan/bytes 1/1/170 ((     0.54 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/HVScaleCorr (PoolColl) db-read 1/2 objs/chan/bytes 12/12/1980 ((     0.52 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/MinBias (PoolColl) db-read 1/2 objs/chan/bytes 1/1/174 ((     0.51 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/MinBiasAverage (PoolColl) db-read 1/1 objs/chan/bytes 1/1/181 ((     0.50 ))s
 IOVDbSvc             INFO Folder /LAR/ElecCalibMC/MphysOverMcal (PoolColl) db-read 1/2 objs/chan/bytes 3/3/516 ((     0.43 ))s
 IOVDbSvc             INFO Folder /LAR/ElecCalibMC/Noise (PoolColl) db-read 1/2 objs/chan/bytes 3/3/516 ((     0.50 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/Pedestal (PoolRef) db-read 1/1 objs/chan/bytes 1/1/167 ((     0.44 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/Ramp (PoolColl) db-read 1/2 objs/chan/bytes 3/3/489 ((     0.54 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/Shape (PoolColl) db-read 1/2 objs/chan/bytes 3/3/477 ((     0.55 ))s
-IOVDbSvc             INFO Folder /LAR/Identifier/LArTTCellMapAtlas (PoolRef) db-read 1/0 objs/chan/bytes 1/1/173 ((     0.48 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/Pedestal (PoolRef) db-read 1/1 objs/chan/bytes 1/1/167 ((     0.45 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/Ramp (PoolColl) db-read 1/2 objs/chan/bytes 3/3/489 ((     0.58 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/Shape (PoolColl) db-read 1/2 objs/chan/bytes 3/3/477 ((     0.49 ))s
+IOVDbSvc             INFO Folder /LAR/Identifier/LArTTCellMapAtlas (PoolRef) db-read 1/0 objs/chan/bytes 1/1/173 ((     0.45 ))s
 IOVDbSvc          WARNING Folder /LAR/Identifier/LArTTCellMapAtlas is requested but no data retrieved
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/fSampl (PoolColl) db-read 1/2 objs/chan/bytes 1/1/194 ((     0.50 ))s
-IOVDbSvc             INFO Folder /LAR/ElecCalibMC/uA2MeV (PoolColl) db-read 1/2 objs/chan/bytes 1/1/165 ((     0.63 ))s
-IOVDbSvc             INFO Total payload read from COOL: 2312609 bytes in ((      8.50 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/fSampl (PoolColl) db-read 1/2 objs/chan/bytes 1/1/194 ((     0.51 ))s
+IOVDbSvc             INFO Folder /LAR/ElecCalibMC/uA2MeV (PoolColl) db-read 1/2 objs/chan/bytes 1/1/165 ((     0.59 ))s
+IOVDbSvc             INFO Total payload read from COOL: 2312609 bytes in ((      7.56 ))s
 IOVDbSvc             INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: ((     0.00 ))s
-IOVDbSvc             INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 20 ReadTime: ((     8.50 ))s
+IOVDbSvc             INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 20 ReadTime: ((     7.56 ))s
 IOVDbSvc             INFO Connection COOLOFL_CALO/OFLP200 : nConnect: 1 nFolders: 3 ReadTime: ((     0.00 ))s
 AthDictLoaderSvc     INFO in finalize...
 ToolSvc              INFO Removing all tools created by ToolSvc
 *****Chrono*****     INFO ****************************************************************************************************
 *****Chrono*****     INFO  The Final CPU consumption ( Chrono ) Table (ordered)
 *****Chrono*****     INFO ****************************************************************************************************
-cObjR_ALL            INFO Time User   : Tot= 1.41  [s] Ave/Min/Max=0.0217(+-0.0905)/    0/ 0.68  [s] #= 65
-cObj_ALL             INFO Time User   : Tot= 2.56  [s] Ave/Min/Max=0.0883(+-0.196)/    0/ 0.79  [s] #= 29
-ChronoStatSvc        INFO Time User   : Tot= 95.8  [s]                                             #=  1
+cObjR_ALL            INFO Time User   : Tot= 0.88  [s] Ave/Min/Max=0.0135(+-0.0598)/    0/ 0.45  [s] #= 65
+cObj_ALL             INFO Time User   : Tot=  1.7  [s] Ave/Min/Max=0.0586(+-0.126)/    0/ 0.53  [s] #= 29
+ChronoStatSvc        INFO Time User   : Tot= 82.8  [s]                                             #=  1
 *****Chrono*****     INFO ****************************************************************************************************
 ChronoStatSvc.f...   INFO  Service finalized successfully 
 ApplicationMgr       INFO Application Manager Finalized successfully
diff --git a/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.cxx b/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.cxx
index cff1568ff83b1c0637f9382b002a1efe209b0c30..2eec6eca660bffaebb24dc3a487169bb1f921370 100644
--- a/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.cxx
+++ b/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.cxx
@@ -18,15 +18,15 @@
 
 #include "Identifier/Identifier.h"
 #include "Identifier/IdentifierHash.h"
+#include "StoreGate/ReadHandle.h"
 
 #include "GeneratorObjects/McEventCollection.h"
 #include "HepMC/GenEvent.h"
 #include "HepMC/GenParticle.h"
 
 
-#include "AthenaKernel/IAtRndmGenSvc.h"
+#include "AthenaKernel/RNGWrapper.h"
 
-#include "StoreGate/StoreGateSvc.h" 
 #include "CLHEP/Units/SystemOfUnits.h"
 #include "GaudiKernel/ListItem.h"
 
@@ -42,7 +42,7 @@ LArCellBuilderFromLArHitTool::LArCellBuilderFromLArHitTool(
 				      const std::string& type, 
 				      const std::string& name, 
 				      const IInterface* parent)
-  :AthAlgTool(type, name, parent),
+  :base_class(type, name, parent),
    m_priority(1000), 
    m_caloNum(),
    m_calo_dd_man(nullptr),
@@ -62,17 +62,14 @@ LArCellBuilderFromLArHitTool::LArCellBuilderFromLArHitTool(
    m_Windows(false), 
    m_WindowsEtaSize(0.4),  
    m_WindowsPhiSize(0.5),
-   m_AtRndmGenSvc(nullptr),
    m_WithNoise(true),
    m_WithElecNoise(true),
    m_WithPileUpNoise(false),
    m_NoiseToolName("CaloNoiseTool/calonoisetool"),
    m_noisetool(nullptr),
    m_WithMap(false),
-   m_mcEventName("GEN_EVENT")
- 
+   m_athRNGSvc("AthRNGSvc", name)
 {
-  declareInterface<ICaloCellMakerTool>(this); 
   // Priority of the IncidentListener (for "BeginRun")
   declareProperty("BeginRunPriority",m_priority); 
 
@@ -81,7 +78,7 @@ LArCellBuilderFromLArHitTool::LArCellBuilderFromLArHitTool(
   declareProperty("LArRegion",m_LArRegion);
 
   // LAr Region of interest:
-  declareProperty("LArHitContainers",m_HitContainers);
+  declareProperty("LArHitContainers",m_HitContainerKeys);
 
   //threshold on energy of the Hits
   declareProperty("eHitThreshold", m_eHitThreshold);
@@ -107,8 +104,9 @@ LArCellBuilderFromLArHitTool::LArCellBuilderFromLArHitTool(
   declareProperty("NoiseTool",m_NoiseToolName);
 
   // McEventCollection
-  declareProperty("McEventName", m_mcEventName);
+  declareProperty("McEventName", m_mcEventKey = "GEN_EVENT");
 
+  declareProperty("AthRNGSvc", m_athRNGSvc);
 }
 
 
@@ -240,32 +238,32 @@ StatusCode LArCellBuilderFromLArHitTool::initialize()
  
   if (m_LArRegion == "LAr_EM") 
      {       
-        m_HitContainers.push_back("LArHitEMB");	
-        m_HitContainers.push_back("LArHitEMEC");
+        m_HitContainerKeys.emplace_back("LArHitEMB");
+        m_HitContainerKeys.emplace_back("LArHitEMEC");
         //nPool=175000;
 	
      }
   else if (m_LArRegion == "LAr_EM_Barrel")
      {
-        m_HitContainers.push_back("LArHitEMB");
+        m_HitContainerKeys.emplace_back("LArHitEMB");
         //nPool=150000;
      }
   else if (m_LArRegion == "LAr_EM_Endcap")
      {
-        m_HitContainers.push_back("LArHitEMEC");
+        m_HitContainerKeys.emplace_back("LArHitEMEC");
         //nPool=150000;
      }
   else if (m_LArRegion == "LAr_HEC")
      {
-        m_HitContainers.push_back("LArHitHEC");
+        m_HitContainerKeys.emplace_back("LArHitHEC");
         //nPool=6000;
      }
   else if (m_LArRegion == "LAr_FCal")  
     {      
-        m_HitContainers.push_back("LArHitFCAL");
+        m_HitContainerKeys.emplace_back("LArHitFCAL");
         //nPool=3600;
     }  
-  else if (m_LArRegion == "UserDefined" && (m_HitContainers.size()>0) )
+  else if (m_LArRegion == "UserDefined" && (m_HitContainerKeys.size()>0) )
      {
       ATH_MSG_INFO ("Using user defined Region: hitContainers are ");
       ATH_MSG_INFO (" cannot simulate noise ");
@@ -274,8 +272,8 @@ StatusCode LArCellBuilderFromLArHitTool::initialize()
       m_WithMap = false;
       
       std::string names ; 
-      for(unsigned int i=0; i < m_HitContainers.size(); ++i)
-	names+=m_HitContainers[i]+" ";
+      for(unsigned int i=0; i < m_HitContainerKeys.size(); ++i)
+	names+=m_HitContainerKeys[i].key()+" ";
       ATH_MSG_INFO (names);
       //nPool=10000;
      }
@@ -285,6 +283,8 @@ StatusCode LArCellBuilderFromLArHitTool::initialize()
       return StatusCode::FAILURE;
   }
 
+  ATH_CHECK( m_HitContainerKeys.initialize() );
+
   // retrieve the noisetool  
   //always needed even without noise to get the gain estimate
 
@@ -306,8 +306,7 @@ StatusCode LArCellBuilderFromLArHitTool::initialize()
 
 
     //access random noise number service
-    static const bool CREATEIFNOTTHERE(true);
-    ATH_CHECK( service("AtRndmGenSvc", m_AtRndmGenSvc, CREATEIFNOTTHERE) );
+    ATH_CHECK( m_athRNGSvc.retrieve() );
   }
   else ATH_MSG_INFO (" no noise selected ");
    
@@ -325,7 +324,13 @@ StatusCode LArCellBuilderFromLArHitTool::initialize()
     ATH_MSG_VERBOSE (" Internal map will not be used ");
   }
 
-  ATH_CHECK( m_eventInfoKey.initialize() );
+  if (m_WithMap && m_Windows) {
+    ATH_CHECK( m_mcEventKey.initialize() );
+  }
+  else {
+    m_mcEventKey = "";
+  }
+
   return StatusCode::SUCCESS;
 }
 
@@ -344,9 +349,9 @@ LArCellBuilderFromLArHitTool::handle(const Incident& /* inc*/ )
   if (m_WithMap) 
   {    
     ATH_MSG_VERBOSE (" initialize internal cell collection ");
-    if (!this->initializeCellPermamentCollection().isSuccess())
+    if (!this->initializeCellPermanentCollection().isSuccess())
     {
-      ATH_MSG_FATAL ("Making of cell permament collection failed");
+      ATH_MSG_FATAL ("Making of cell permanent collection failed");
       return;
     }    
   }
@@ -357,15 +362,6 @@ LArCellBuilderFromLArHitTool::handle(const Incident& /* inc*/ )
 
 StatusCode LArCellBuilderFromLArHitTool::finalize()
 {
-  ATH_MSG_VERBOSE (" finalize: delete cellPermamentCollection ");
-  //clean all LarHitInfo*
-  for (unsigned int i=0;i<m_cellPermanentCollection.size();++i){
-    if (m_cellPermanentCollection[i]!=0) {
-      delete m_cellPermanentCollection[i];
-    }
-  }
-
-
   return StatusCode::SUCCESS;
 }
 
@@ -373,48 +369,33 @@ StatusCode LArCellBuilderFromLArHitTool::finalize()
 
 StatusCode LArCellBuilderFromLArHitTool::process( CaloCellContainer * theCellContainer )
 {
+  const EventContext& ctx = Gaudi::Hive::currentContext();
+
   ATH_MSG_DEBUG ("Executing LArCellBuilderFromLArHitTool");
 
   unsigned int nCells0 = theCellContainer->size();
   
 
-//---- re-initialize the HitMap ----------------
-  // WITH NOISE 
-  if( m_WithMap )
-  {      
-    ATH_CHECK( this->resetCellPermanentCollection() );
-    if (m_Windows){
-      ATH_MSG_WARNING (" windows not reimplemented yet");
-      ATH_CHECK( this->buildWindowOnPermanentCollection() );
-    }
-  }
-  
-
 //---- Get the HitContainer ----------------
 
-  std::vector<std::string>::const_iterator hit_itr = m_HitContainers.begin(); 
-  std::vector<std::string>::const_iterator hit_itr_end = m_HitContainers.end();
-
-  for(; hit_itr!=hit_itr_end; hit_itr++) 
-  { 
-    //  const DataHandle < LArHitContainer >     hitcoll ;
-    const LArHitContainer* hitcoll;
-    ATH_CHECK( evtStore()->retrieve(hitcoll,*hit_itr) );
+  std::vector<const LArHit*> hits;
+  if( m_WithMap ) {
+    hits.resize (m_cellPermanentCollection.size());
+  }
 
-    ATH_MSG_DEBUG ("LArHit container: " << *hit_itr 
+  for (const SG::ReadHandleKey<LArHitContainer>& k : m_HitContainerKeys)
+  {
+    SG::ReadHandle<LArHitContainer> hitcoll (k, ctx);
+    ATH_MSG_DEBUG ("LArHit container: " << k.key()
                    << " Size=" << hitcoll->size());
-      
-    LArHitContainer::const_iterator f_cell = hitcoll->begin();
-    LArHitContainer::const_iterator l_cell = hitcoll->end();
-    
-    for ( ; f_cell!=l_cell; ++f_cell)
+
+    for (const LArHit* hit : *hitcoll)
     {	          
-      LArHit* hit = (*f_cell) ; 
       // hits and cells are now in MeV
 
       double e  = hit->energy() ;
       if (m_applyHitEnergyThreshold) {
-	if (e>m_eHitThreshold) continue;
+	if (e < m_eHitThreshold) continue;
       }
       
       Identifier id  = hit->cellID();
@@ -439,9 +420,9 @@ StatusCode LArCellBuilderFromLArHitTool::process( CaloCellContainer * theCellCon
 	  }
 
 	  // set the hits of hitmap
-	  if (m_cellPermanentCollection[idHash]!=0) {
-	    m_cellPermanentCollection[idHash]->setHit(hit);
-	   }	
+	  if (m_cellPermanentCollection[idHash].caloDDE()!=0) {
+            hits[idHash] = hit;
+          }
 	  else {
             ATH_MSG_WARNING (" Trying to fill hit with no DDE " 
                              << m_atlas_id->show_to_string(id));
@@ -470,11 +451,9 @@ StatusCode LArCellBuilderFromLArHitTool::process( CaloCellContainer * theCellCon
   HepRandomEngine* engine=0; 
   if (m_WithNoise) 
     {
-      SG::ReadHandle<xAOD::EventInfo> eventInfo (m_eventInfoKey); 
-      const int iSeedNumber = eventInfo->runNumber()*10000000
-	                     +eventInfo->eventNumber();
-      
-      engine = m_AtRndmGenSvc->setOnDefinedSeeds(iSeedNumber,this->name());
+      ATHRNG::RNGWrapper* wrapper = m_athRNGSvc->getEngine (this, this->name());
+      wrapper->setSeed (this->name(), ctx);
+      engine = wrapper->getEngine (ctx);
     }
 
 
@@ -482,38 +461,27 @@ StatusCode LArCellBuilderFromLArHitTool::process( CaloCellContainer * theCellCon
   // with map
   if( m_WithMap )
   {      
-    CellPermanentCollection::const_iterator it, itEnd;
-
+    Window window (m_WindowsEtaSize, m_WindowsPhiSize);
     if (m_Windows){
-      it=m_windowOnPermanentCollection.begin();
-      itEnd=m_windowOnPermanentCollection.end();
+      ATH_MSG_WARNING (" windows not reimplemented yet");
+      ATH_CHECK( this->defineWindow (window, ctx) );
     }
-    else{
-      it=m_cellPermanentCollection.begin();
-      itEnd=m_cellPermanentCollection.end();
-    }    
  
-    long index =-1;
-    
-    for ( ; it!=itEnd; ++it)
+    size_t sz = m_cellPermanentCollection.size();
+    for (size_t index = 0; index < sz; ++index)
     {
-      //check
-      ++index;
-      if (*it==0) {	
-	//log << MSG::WARNING << " hole in permanent collection " 
-	//    << index << endmsg ;
-	continue;
-      }
-      
-      const LArHitInfo & info = **it;           
+      const LArHitInfo& info = m_cellPermanentCollection[index];
+      if (!info.caloDDE()) continue;
+      if (m_Windows && !window.isInWindow (*info.caloDDE())) continue;
+      const LArHit* hit = hits[index];
 
       //if no noise eliminate now cells with zero energy (=cells with no hits)
       //or zero energy cell
       if ( ! m_WithNoise) {
-        if (!info.hasBeenHit()) continue ;
+        if (!hit) continue ;
       }
       
-      double e=info.energy();   
+      double e = hit ? hit->energy() : 0;
 
       // scale     
       e/= m_dd_fSampl->FSAMPL( info.caloDDE()->identify() ); 
@@ -524,7 +492,7 @@ StatusCode LArCellBuilderFromLArHitTool::process( CaloCellContainer * theCellCon
 				    ICaloNoiseToolStep::RAWCHANNELS);      
       const int igain = static_cast<int>(g);
       // retrieve the data of the LArHitInfo
-      std::vector<float> SIGMANOISE=info.SIGMANOISE();
+      const std::vector<float>& SIGMANOISE=info.SIGMANOISE();
 
       // add the noise
       double sigma=SIGMANOISE[igain];  
@@ -550,7 +518,7 @@ StatusCode LArCellBuilderFromLArHitTool::process( CaloCellContainer * theCellCon
       }
       
       // make the LArCell
-      double t=info.time();
+      double t = hit ? hit->time() : 0;
       double q=1.;
       const CaloDetDescrElement * caloDDE=info.caloDDE();
       MakeTheCell(theCellContainer,caloDDE,e,t,q,g);
@@ -623,11 +591,11 @@ StatusCode LArCellBuilderFromLArHitTool::process( CaloCellContainer * theCellCon
 ///////////////////////////////////////////////////////////////////
  
 void 
-LArCellBuilderFromLArHitTool::MakeTheCell(CaloCellContainer * & cellcoll, 
-				      const CaloDetDescrElement * &caloDDE,
-				      const double & e,const double & t,
-				      const double & q,
-				      const CaloGain::CaloGain & g)
+LArCellBuilderFromLArHitTool::MakeTheCell(CaloCellContainer* cellcoll, 
+                                          const CaloDetDescrElement* caloDDE,
+                                          const double e,const double t,
+                                          const double q,
+                                          const CaloGain::CaloGain g) const
 {
   cellcoll->push_back_fast(new LArCell(caloDDE,e,t,q,g));
 }
@@ -635,11 +603,11 @@ LArCellBuilderFromLArHitTool::MakeTheCell(CaloCellContainer * & cellcoll,
 /////////////////////////////////////////////////////////////////// 
 
 // estimate the gain as well
-void LArCellBuilderFromLArHitTool::MakeTheCell(CaloCellContainer* & cellcoll, 
-					   Identifier & id,
-					   const double & e,const double & t,
-                                           const double & q)
-
+void LArCellBuilderFromLArHitTool::MakeTheCell(CaloCellContainer* cellcoll, 
+                                               const Identifier& id,
+                                               const double e,const double t,
+                                               const double q) const
+  
 {  
   const CaloDetDescrElement* caloDDE=m_calo_dd_man->get_element(id);
 
@@ -653,7 +621,7 @@ void LArCellBuilderFromLArHitTool::MakeTheCell(CaloCellContainer* & cellcoll,
 
 /////////////////////////////////////////////////////////////////// 
 
-StatusCode LArCellBuilderFromLArHitTool::initializeCellPermamentCollection()
+StatusCode LArCellBuilderFromLArHitTool::initializeCellPermanentCollection()
 {
   m_cellPermanentCollection.clear();
    
@@ -661,7 +629,7 @@ StatusCode LArCellBuilderFromLArHitTool::initializeCellPermamentCollection()
   IdentifierHash caloCellMin, caloCellMax ;
   m_caloCID->calo_cell_hash_range(m_caloNum,caloCellMin,caloCellMax);
   unsigned int nCellCalo=caloCellMax-caloCellMin;
-  m_cellPermanentCollection.resize(nCellCalo,0);
+  m_cellPermanentCollection.resize(nCellCalo);
 
 
   long index = -1;
@@ -687,11 +655,11 @@ StatusCode LArCellBuilderFromLArHitTool::initializeCellPermamentCollection()
     //Identifier id=caloDDE->identify() ;
     IdentifierHash idHash=caloDDE->subcalo_hash() ;
     
-    LArHitInfo* theLArHitInfo = new LArHitInfo(caloDDE);
+    LArHitInfo theLArHitInfo (caloDDE);
     
     // FIXME: USELESS ! 
-    theLArHitInfo->setEpart2Edep(1. );
-    theLArHitInfo->setEscale(1.);    
+    theLArHitInfo.setEpart2Edep(1. );
+    theLArHitInfo.setEscale(1.);    
 	
     std::vector<float> vNoise;
     if(m_WithElecNoise && !m_WithPileUpNoise)
@@ -709,9 +677,9 @@ StatusCode LArCellBuilderFromLArHitTool::initializeCellPermamentCollection()
 				       static_cast<CaloGain::CaloGain>(igain)) 
 			               );
 
-    theLArHitInfo->setSIGMANOISE(vNoise);
+    theLArHitInfo.setSIGMANOISE(vNoise);
 
-    m_cellPermanentCollection[idHash]=theLArHitInfo;
+    m_cellPermanentCollection[idHash]=std::move(theLArHitInfo);
     
   }
 
@@ -731,7 +699,7 @@ StatusCode LArCellBuilderFromLArHitTool::initializeCellPermamentCollection()
   int nFailed = 0 ;
   
   for (unsigned int i=0;i<m_cellPermanentCollection.size();++i){
-    if (m_cellPermanentCollection[i]==0) {
+    if (m_cellPermanentCollection[i].caloDDE()==0) {
       //log << MSG::WARNING 
       //<< " one element missing in m_cellPermanentCollection " << i << endmsg;
       ++nFailed;      
@@ -749,88 +717,39 @@ StatusCode LArCellBuilderFromLArHitTool::initializeCellPermamentCollection()
 
 /////////////////////////////////////////////////////////////////// 
 
-StatusCode LArCellBuilderFromLArHitTool::resetCellPermanentCollection()
-{
-  for (unsigned int i=0;i<m_cellPermanentCollection.size();++i){
-    if (m_cellPermanentCollection[i]!=0)
-      m_cellPermanentCollection[i]->setHasNotBeenHit();
-  }
-  return StatusCode::SUCCESS;
-}
-
-/////////////////////////////////////////////////////////////////// 
-
-StatusCode LArCellBuilderFromLArHitTool::buildWindowOnPermanentCollection()
-{
-  StatusCode sc=this->defineWindow();
-  if (!sc.isSuccess()) return sc;
-  
-  m_windowOnPermanentCollection.clear();
-  if (m_etaPart.size()==0) return StatusCode::SUCCESS;
-
-  const float pi=2*asin(1);  
-  for (unsigned int i=0;i<m_cellPermanentCollection.size();++i)
-  {
-    if (m_cellPermanentCollection[i]==0) continue ;
-    const CaloDetDescrElement *caloDDE=m_cellPermanentCollection[i]->caloDDE();
-    //loop on the particles of the truth, 
-    //and select a zone around each one
-
-    for(unsigned int iPart=0;iPart<m_etaPart.size();++iPart)
-    { 	     
-      float deltaPhi=fmod(m_phiPart[iPart]-caloDDE->phi()+3*pi,2*pi)-pi;
-      float deltaEta=std::abs(m_etaPart[iPart]-caloDDE->eta());
-      if( std::abs(deltaPhi)<m_WindowsPhiSize/2. &&
-	  std::abs(deltaEta)<m_WindowsEtaSize/2. )
-      {
-	m_windowOnPermanentCollection.push_back(m_cellPermanentCollection[i]);
-	break ;
-      }
-    }	
-  }	
-  
-  return StatusCode::SUCCESS;
-}
-
-/////////////////////////////////////////////////////////////////// 
-
-StatusCode LArCellBuilderFromLArHitTool::defineWindow()
+StatusCode
+LArCellBuilderFromLArHitTool::defineWindow (Window& window,
+                                            const EventContext& ctx) const
 {
 //define a window around each selected Geant-particle (eta,phi)
 
-    MsgStream log(msgSvc(), name());     
-    m_etaPart.clear();
-    m_phiPart.clear();
-    
     //get pointer of MC collection
-    const McEventCollection * mcCollptr; 
-    ATH_CHECK( evtStore()->retrieve(mcCollptr,m_mcEventName) );
+    SG::ReadHandle<McEventCollection> mcCollptr (m_mcEventKey, ctx);
 
-    McEventCollection::const_iterator itr; 
-    for (itr = mcCollptr->begin(); itr!=mcCollptr->end(); ++itr) {
-      const HepMC::GenEvent* myEvent=(*itr);
+    window.reset (mcCollptr->size());
+
+    for (const HepMC::GenEvent* myEvent : *mcCollptr) {
       HepMC::GenEvent::particle_const_iterator itrPart; 
       for (itrPart = myEvent->particles_begin(); 
 	   itrPart!=myEvent->particles_end(); ++itrPart ) 
 	{
-	  HepMC::GenParticle *part=*itrPart;
+	  const HepMC::GenParticle *part=*itrPart;
 	  //works only for photons(22) and electrons(11) primary 
 	  //particle from Geant (status>1000) with pt>5 GeV      
 	  if( (part->pdg_id()==22 || abs(part->pdg_id())==11) 
 	      && part->status()>1000 
 	      && part->momentum().perp()>5 * GeV )
-	    {
-	      m_etaPart.push_back(part->momentum().pseudoRapidity()); 
-	      m_phiPart.push_back(part->momentum().phi()); 
-	    }
-	} 
+          {
+            window.push (part->momentum().pseudoRapidity(),
+                         part->momentum().phi());
+          }
+        }
     }
 
   if (msgSvc()->outputLevel() <= MSG::DEBUG) {
-    for(unsigned int iPart=0;iPart<m_etaPart.size();++iPart)
-    {      
+    for (const std::pair<float, float>& p : window.m_parts) {
       ATH_MSG_DEBUG( " Selected window" 
-                     << m_etaPart[iPart] << " phi=" << m_phiPart[iPart] 
+                     << p.first << " phi=" << p.second
                      << " deta=" << m_WindowsEtaSize << " dphi="<< m_WindowsPhiSize 
                      );
     }
@@ -838,3 +757,44 @@ StatusCode LArCellBuilderFromLArHitTool::defineWindow()
   
   return StatusCode::SUCCESS; 
 }
+
+
+/////////////////////////////////////////////////////////////////// 
+
+
+LArCellBuilderFromLArHitTool::Window::Window (float etaSize,
+                                              float phiSize)
+  : m_etaSize (etaSize),
+    m_phiSize (phiSize)
+{
+}
+
+
+/////////////////////////////////////////////////////////////////// 
+
+
+void LArCellBuilderFromLArHitTool::Window::reset (size_t n)
+{
+  m_parts.clear();
+  m_parts.reserve (n);
+}
+
+
+/////////////////////////////////////////////////////////////////// 
+
+
+bool LArCellBuilderFromLArHitTool::Window::isInWindow
+ (const CaloDetDescrElement& caloDDE) const
+{
+  for (const std::pair<float, float>& p : m_parts) {
+    float deltaPhi = fmod(p.second - caloDDE.phi()+3*M_PI,2*M_PI)-M_PI;
+    float deltaEta = std::abs(p.first - caloDDE.eta());
+    if( std::abs(deltaPhi) < m_phiSize/2. &&
+        std::abs(deltaEta) < m_etaSize/2. )
+    {
+      return true;
+    }
+  }
+
+  return false;
+}
diff --git a/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.h b/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.h
index e947a0a554a85197ddf48776a07ed25ac1d72bfe..ce7f868b627cda4a5295f5466478107ab284fbed 100644
--- a/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.h
+++ b/LArCalorimeter/LArCellRec/src/LArCellBuilderFromLArHitTool.h
@@ -51,18 +51,20 @@ process(CaloCellContainer * theCellContainer)
 #include "CaloIdentifier/LArID.h"
 #include "Identifier/IdContext.h"
 #include "AthenaKernel/IOVSvcDefs.h"
+#include "AthenaKernel/IAthRNGSvc.h"
 
 #include "StoreGate/DataHandle.h"
-//#include "DataModel/DataPool.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "StoreGate/ReadHandleKeyArray.h"
 
 #include "Identifier/IdentifierHash.h"
 #include "CaloIdentifier/CaloCell_ID.h"
-//#include "LArCellRec/LArHitMap.h"
 #include "LArHitInfo.h"
 #include "CaloInterface/ICaloNoiseTool.h"
 #include "CaloEvent/CaloCellContainer.h"
 #include "LArElecCalib/ILArfSampl.h"
-#include "xAODEventInfo/EventInfo.h"
+#include "GeneratorObjects/McEventCollection.h"
+#include "LArSimEvent/LArHitContainer.h"
 
 #include <CLHEP/Random/Randomize.h>
 
@@ -74,12 +76,10 @@ class CaloDetDescrElement;
 class IAtRndmGenSvc;
 class LArG3Escale ;
 
-class LArCellBuilderFromLArHitTool: public AthAlgTool,
-					   public IIncidentListener,  
-					   virtual public ICaloCellMakerTool
-
+class LArCellBuilderFromLArHitTool
+  : public extends<AthAlgTool, IIncidentListener,  ICaloCellMakerTool>
 {
-  typedef std::vector<LArHitInfo*> CellPermanentCollection ;
+  typedef std::vector<LArHitInfo> CellPermanentCollection;
 
 public:    
 
@@ -88,23 +88,37 @@ public:
 				      const std::string& name, 
 				      const IInterface* parent);
 
-  virtual StatusCode initialize();
-  virtual StatusCode process( CaloCellContainer * theCellContainer) ;
-  StatusCode finalize();
-  void handle(const Incident&); 
+  virtual StatusCode initialize() override;
+  virtual StatusCode finalize() override;
+  virtual StatusCode process( CaloCellContainer * theCellContainer) override;
+  virtual void handle(const Incident&) override;
 
 private: 
-
-  void MakeTheCell(CaloCellContainer* & cellcoll, Identifier & id,
-		   const double & e,const double & t,const double & q);
-  void MakeTheCell(CaloCellContainer* & cellcoll, 
-		   const CaloDetDescrElement * & caloDDE,
-		   const double & e,const double & t,const double & q, 
-		   const CaloGain::CaloGain & g);
-  StatusCode initializeCellPermamentCollection();
-  StatusCode resetCellPermanentCollection();
-  StatusCode buildWindowOnPermanentCollection();
-  StatusCode defineWindow();
+  class Window
+  {
+  public:
+    Window (float etaSize, float phiSize);
+    void reset (size_t n);
+    void push (float eta, float phi)
+    {
+      m_parts.emplace_back (eta, phi);
+    }
+
+    bool isInWindow (const CaloDetDescrElement& caloDDE) const;
+
+    float m_etaSize;
+    float m_phiSize;
+    std::vector<std::pair<float, float> > m_parts;
+  };
+
+  void MakeTheCell(CaloCellContainer* cellcoll, const Identifier& id,
+		   const double e,const double t,const double q) const;
+  void MakeTheCell(CaloCellContainer* cellcoll, 
+		   const CaloDetDescrElement * caloDDE,
+		   const double e,const double t,const double q, 
+		   const CaloGain::CaloGain g) const;
+  StatusCode initializeCellPermanentCollection();
+  StatusCode defineWindow (Window& window, const EventContext& ctx) const;
   
  
   int m_priority;
@@ -121,14 +135,13 @@ private:
   const LArHEC_ID*       m_hecID;
   const LArFCAL_ID*      m_fcalID;
 
-  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey{this, "eventInfoKey", "EventInfo", "Key for EventInfo object"};
   const DataHandle<ILArfSampl> m_dd_fSampl;
 
 
 
 //
   std::string     m_LArRegion;         //Region to build  
-  std::vector<std::string>  m_HitContainers;      //Hit containers
+  SG::ReadHandleKeyArray<LArHitContainer> m_HitContainerKeys;      //Hit containers
   
 //THRESHOLDS on E
   bool m_applyHitEnergyThreshold ;
@@ -150,21 +163,11 @@ private:
   // permanent structure to sort the cell (one entry per cell in detector)
   CellPermanentCollection m_cellPermanentCollection ;
 
-  // window collection
-  CellPermanentCollection m_windowOnPermanentCollection ;  
-
   //SWITCH on WINDOWS MODE  
   bool m_Windows;
   float m_WindowsEtaSize;
   float m_WindowsPhiSize;
   
-  std::vector<float> m_phiPart;
-  std::vector<float> m_etaPart;
-
-  
-
-  IAtRndmGenSvc* m_AtRndmGenSvc;
-
   //SWITCH on NOISE
   bool m_WithNoise;
   bool m_WithElecNoise;
@@ -178,14 +181,9 @@ private:
   bool m_WithMap;
 
   // MC event location
-  std::string m_mcEventName ;
-
+  SG::ReadHandleKey<McEventCollection> m_mcEventKey;
 
+  ServiceHandle<IAthRNGSvc> m_athRNGSvc;
 };
 
 #endif
-
-
-
-
-
diff --git a/LArCalorimeter/LArCellRec/src/LArHitInfo.h b/LArCalorimeter/LArCellRec/src/LArHitInfo.h
index aaef590274798394a1913cc5a5426188a9fbf579..9fc8b05ed3eaa85fcfb8c7aa8ae2cca42457b4a0 100755
--- a/LArCalorimeter/LArCellRec/src/LArHitInfo.h
+++ b/LArCalorimeter/LArCellRec/src/LArHitInfo.h
@@ -5,50 +5,31 @@
 #ifndef LARCELLREC_LARCELLBUILDERFROMLARHITWITHNOISE_H
 #define LARCELLREC_LARCELLBUILDERFROMLARHITWITHNOISE_H
 
-#include "LArSimEvent/LArHit.h"
 #include "CaloDetDescr/CaloDetDescrElement.h"
+#include <vector>
 
 
 class LArHitInfo 
 {
   private: 
-    const LArHit * m_hit ;
     std::vector<float> m_SIGMANOISE;
     const CaloDetDescrElement * m_caloDDE ;
     float m_Escale;
     float m_Epart2Edep;
     
   public: 
-    LArHitInfo():m_hit(0),m_SIGMANOISE(0),m_caloDDE(0),m_Escale(0.),
+    LArHitInfo():m_SIGMANOISE(0),m_caloDDE(0),m_Escale(0.),
       m_Epart2Edep(0.){}
 
-    LArHitInfo(const CaloDetDescrElement* caloDDE):m_hit(0),m_SIGMANOISE(0),m_caloDDE(caloDDE),
+    LArHitInfo(const CaloDetDescrElement* caloDDE):m_SIGMANOISE(0),m_caloDDE(caloDDE),
       m_Escale(0.),m_Epart2Edep(0.)
       {}
 
-    inline float energy() const {if (m_hit!=0) { return m_hit->energy() ;} else{return 0.;}}
-    inline float time()   const {if (m_hit!=0) { return m_hit->time();} else{return 0.;}}
-    inline const LArHit * hit() const {return m_hit ;}
-    
-    inline std::vector<float> SIGMANOISE() const {return m_SIGMANOISE;}
+    inline const std::vector<float>& SIGMANOISE() const {return m_SIGMANOISE;}
     inline const CaloDetDescrElement* caloDDE() const {return m_caloDDE;}  
     inline float Escale() const {return m_Escale;}
     inline float Epart2Edep() const {return m_Epart2Edep;}
-    inline bool hasBeenHit() const { if (m_hit==0) {return false;} else {return true;} }
     
-
-    inline void setHit(const LArHit* hit) 
-      {
-	m_hit=hit;
-      }
-
-
-    inline void setHasNotBeenHit() 
-      {
-	m_hit=0;
-      }
-
-
     inline void setSIGMANOISE(const std::vector<float> & SIGMANOISE) 
       {	
 	m_SIGMANOISE.clear();	
@@ -71,7 +52,6 @@ class LArHitInfo
 
     void print() const
       {
-	std::cout<<"Hit: e="<<m_hit->energy()<<" t="<<m_hit->time()<<std::endl;
 	if(m_SIGMANOISE.size()!=0)
 	  std::cout<<"SigmaNoise: "<<m_SIGMANOISE[2]<<"(HG) "
 		                   <<m_SIGMANOISE[1]<<"(MG) "