diff --git a/PhysicsAnalysis/POOLRootAccess/CMakeLists.txt b/PhysicsAnalysis/POOLRootAccess/CMakeLists.txt
index ead38b41fbf5ff617a06247e74664e9f6fbc2b91..9580c889c4095593e4deebffe286b41bb89a7d22 100644
--- a/PhysicsAnalysis/POOLRootAccess/CMakeLists.txt
+++ b/PhysicsAnalysis/POOLRootAccess/CMakeLists.txt
@@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC
 			  Control/StoreGateBindings
                           PRIVATE
                           Control/xAODRootAccess
+			  Control/AthAnalysisBaseComps
                           Event/xAOD/xAODBase
                           Event/xAOD/xAODEventInfo )
 
@@ -23,9 +24,9 @@ find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 atlas_add_library( POOLRootAccess
                    src/*.cxx
                    PUBLIC_HEADERS POOLRootAccess
-                   PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-		   LINK_LIBRARIES ${ROOT_LIBRARIES} xAODRootAccess
-                   PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} GaudiKernel StoreGateLib SGtests StoreGateBindings )
+                   PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} 
+		   LINK_LIBRARIES ${ROOT_LIBRARIES} xAODRootAccess AthAnalysisBaseCompsLib StoreGateLib 
+                   PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} GaudiKernel SGtests StoreGateBindings  )
 
 atlas_add_dictionary( POOLRootAccessDict
                       POOLRootAccess/POOLRootAccessDict.h
@@ -36,12 +37,12 @@ atlas_add_dictionary( POOLRootAccessDict
 atlas_add_executable( ut_basicRead_test
                       test/ut_basicRead_test.cxx
                       INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${ROOT_LIBRARIES} POOLRootAccess xAODBase xAODEventInfo )
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} POOLRootAccess xAODEventInfo )
 
 atlas_add_executable( ut_basicxAODRead_test
                       test/ut_basicxAODRead_test.cxx
                       INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${ROOT_LIBRARIES} POOLRootAccess xAODBase xAODEventInfo )
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} POOLRootAccess xAODEventInfo )
 
 # Install files from the package:
 atlas_install_joboptions( share/*.opts )
diff --git a/PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h b/PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h
index e2115431fab2e3f69e83e456a772002addf9a3b0..b4e0a2ba33e7b198ec48e532124890f17ed50c4f 100644
--- a/PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h
+++ b/PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h
@@ -20,10 +20,15 @@
 class TFile;
 class TChain;
 
+//Bootstraps the minimal gaudi environment + a few extra defaults (see basic.opts)
+namespace Gaudi {
+  IAppMgrUI* Init();
+}
+
 namespace POOL {
 
    ///Bootstraps (creates and configures) the Gaudi Application with the provided options file
-   IAppMgrUI* Init( const char* options = "POOLRootAccess/basicPOOL.opts" );
+   IAppMgrUI* Init( const char* options = "POOLRootAccess/basic.opts" );
 
 
    class TEvent {
@@ -36,11 +41,9 @@ namespace POOL {
            kUndefinedAccess = 3
          };
       
-         static IAppMgrUI* Init( const char* options ) { return POOL::Init(options); }
-         static IAppMgrUI* InitPOOL() { return POOL::Init("POOLRootAccess/basicPOOL.opts"); }
-         static IAppMgrUI* InitxAOD() { return POOL::Init("POOLRootAccess/basicxAOD.opts"); }
+         static IAppMgrUI* Init( const char* options = "POOLRootAccess/basic.opts" ) { return POOL::Init(options); }
+  
 
-         //use selectorType="Athena::xAODEventSelector" for fast xAOD
          TEvent( const std::string& name = "StoreGateSvc" );
          TEvent( EReadMode mode, const std::string& name = "StoreGateSvc" );
          
diff --git a/PhysicsAnalysis/POOLRootAccess/cmt/requirements b/PhysicsAnalysis/POOLRootAccess/cmt/requirements
index 538a95a5e58f3764a98a05d37d34c7f74b4a83f0..7a6965d774764f489c65bc902391c60c2225aab0 100644
--- a/PhysicsAnalysis/POOLRootAccess/cmt/requirements
+++ b/PhysicsAnalysis/POOLRootAccess/cmt/requirements
@@ -2,6 +2,7 @@
 package POOLRootAccess
 author  will
 
+
 ## for athena policies: this has to be the first use statement
 use AtlasPolicy 	AtlasPolicy-*
 
@@ -14,6 +15,9 @@ use StoreGateBindings StoreGateBindings-* Control
 
 private
 use AtlasROOT AtlasROOT-* External
+
+use AthAnalysisBaseComps AthAnalysisBaseComps-* Control
+
 end_private
 
 ##
@@ -42,3 +46,4 @@ macro_append ut_basicRead_test_dependencies " POOLRootAccess "
 application ut_basicxAODRead_test ../test/ut_basicxAODRead_test.cxx
 macro_append ut_basicxAODRead_test_dependencies " POOLRootAccess "
 end_private
+
diff --git a/PhysicsAnalysis/POOLRootAccess/share/basicxAOD.opts b/PhysicsAnalysis/POOLRootAccess/share/basic.opts
similarity index 89%
rename from PhysicsAnalysis/POOLRootAccess/share/basicxAOD.opts
rename to PhysicsAnalysis/POOLRootAccess/share/basic.opts
index f8f2aa962bc641890ffd735a1af20e51dd8f834c..f939e83477eab9560c69cd0cb1a6eff456157fa4 100644
--- a/PhysicsAnalysis/POOLRootAccess/share/basicxAOD.opts
+++ b/PhysicsAnalysis/POOLRootAccess/share/basic.opts
@@ -2,6 +2,8 @@
 #pragma print off //do not print
 ApplicationMgr.OutputLevel = 0; //NIL ... so ApplicationMgr is silent
 //MessageSvc.OutputLevel = 5; //ERROR
+ApplicationMgr.EventLoop = "MinimalEventLoopMgr"; //for minimal service creation
+
 EventPersistencySvc.CnvServices = {"Athena::xAODCnvSvc","AthenaPoolCnvSvc"};
 ProxyProviderSvc.ProviderNames = {"MetaDataSvc"};
 MetaDataSvc.MetaDataContainer = "MetaDataHdr";
@@ -13,9 +15,6 @@ MessageSvc.Format = "% F%30W%S%7W%R%T %0W%M";
 ChronoStatSvc.ChronoPrintOutTable = false;
 ChronoStatSvc.PrintUserTime = false;
 
-//we hijack the joboptionsvc to signal to POOLTEvent we want to use this event selector type
-TEvent.EventSelectorType = "Athena::xAODEventSelector";
-
 //The following settings silence some services (although not entirely, sadly)
 //need to keep this here because a reinit will override the setWarning settings of MessageSvc
 HistogramPersistencySvc.OutputLevel = 5;
diff --git a/PhysicsAnalysis/POOLRootAccess/share/basicPOOL.opts b/PhysicsAnalysis/POOLRootAccess/share/basicPOOL.opts
deleted file mode 100644
index fbb9111ac8e053abe41c81ff8ffcd4f53022d2e2..0000000000000000000000000000000000000000
--- a/PhysicsAnalysis/POOLRootAccess/share/basicPOOL.opts
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#pragma print off //do not print
-ApplicationMgr.OutputLevel = 0; //NIL ... so ApplicationMgr is silent
-//MessageSvc.OutputLevel = 5; //ERROR
-EventPersistencySvc.CnvServices = {"AthenaPoolCnvSvc"};
-ProxyProviderSvc.ProviderNames = {"AthenaPoolAddressProviderSvc", "MetaDataSvc"};
-MetaDataSvc.MetaDataContainer = "MetaDataHdr";
-
-//make the MessageSvc display a bit wider
-MessageSvc.Format = "% F%30W%S%7W%R%T %0W%M";
-
-//disable chrono table in finalize
-ChronoStatSvc.ChronoPrintOutTable = false;
-ChronoStatSvc.PrintUserTime = false;
-
-//The following settings silence some services (although not entirely, sadly)
-//need to keep this here because a reinit will override the setWarning settings of MessageSvc
-HistogramPersistencySvc.OutputLevel = 5;
-ClassIDSvc.OutputLevel = 5;
-PoolSvc.OutputLevel = 5;
-AthDictLoaderSvc.OutputLevel = 5;
-ChronoStatSvc.OutputLevel = 5;
-AthenaPoolAddressProviderSvc.OutputLevel = 5;
-ProxyProviderSvc.OutputLevel = 5;
-DBReplicaSvc.OutputLevel = 5;
-EventPersistencySvc.OutputLevel = 5;
-TagMetaDataStore.OutputLevel = 5;
-
-MessageSvc.setWarning = {"HistogramPersistencySvc","ClassIDSvc","PoolSvc","AthDictLoaderSvc","AthenaPoolAddressProviderSvc","ProxyProviderSvc","DBReplicaSvc","MetaDataSvc","MetaDataStore","InputMetaDataStore","AthenaPoolCnvSvc","TagMetaDataStore"};
diff --git a/PhysicsAnalysis/POOLRootAccess/src/TEvent.cxx b/PhysicsAnalysis/POOLRootAccess/src/TEvent.cxx
index 903b2feec247063cc4e3e249aa6e6d6d215a918e..f5c63af037b7826e8ff137be986cc368e1c41a45 100644
--- a/PhysicsAnalysis/POOLRootAccess/src/TEvent.cxx
+++ b/PhysicsAnalysis/POOLRootAccess/src/TEvent.cxx
@@ -15,29 +15,35 @@
 #include "TFile.h"
 #include "TChain.h"
 
+#include "AthAnalysisBaseComps/AthAnalysisHelper.h"
 
+namespace Gaudi {
+  IAppMgrUI* Init() {
+    return AAH::initGaudi("POOLRootAccess/basic.opts");
+  }
+}
 
 namespace POOL {
 
 IAppMgrUI* Init( const char* options ) {
-   IAppMgrUI* theApp = Gaudi::createApplicationMgr();
-   //check if already configured 
-   if(theApp->FSMState() != Gaudi::StateMachine::OFFLINE) return theApp;
-   //set the joboptions 
-   SmartIF<IProperty> propMgr(theApp);
-   propMgr->setProperty("JobOptionsPath",options);
-   //configure and return
-   theApp->configure(); 
-   propMgr->setProperty("OutputLevel","3"); //INFO
-   theApp->initialize();
-   return theApp;
+  return AAH::initGaudi(options); //see AthAnalysisHelper
 }
 
 TEvent::~TEvent() {
-  //need to destroy my storegate, selector, and loop 
-  if(m_evtLoop.isSet()) m_evtLoop.release();
-  if(m_evtSelect.isSet()) m_evtSelect.release();
-  if(m_evtStore.isSet()) m_evtStore.release();
+  //need to destroy my storegate, selector, and loop
+  //take refcounts down to 1 before handle release, to ensure services are destroyed
+  if(m_evtLoop.isSet()) {
+    //while(m_evtLoop->refCount()>1) m_evtLoop->release(); //CRASH
+    m_evtLoop.release();
+  }
+  if(m_evtSelect.isSet()) {
+    //while(m_evtSelect->refCount()>1) m_evtSelect->release();
+    m_evtSelect.release();
+  }
+  if(m_evtStore.isSet()) {
+    //while(m_evtStore->refCount()>1) m_evtStore->release();
+    m_evtStore.release();
+  }
 }
 
 TEvent::TEvent(const std::string& name ) : TEvent( kPOOLAccess , name ) { }
@@ -50,16 +56,20 @@ TEvent::TEvent(EReadMode mode, const std::string& name) :
    m_activeStoreSvc("ActiveStoreSvc","TEvent"+name),
    m_inputMetaStore("InputMetaDataStore","TEvent"+name) /*fixme, when reading multiple files at once?*/ {
 
+   Gaudi::Init();
+
    //FIXME: Should protect against attempt to mix POOL with nonPOOL
    if(mode==kPOOLAccess) {
-    InitPOOL();
+    //add the AthenaPoolAddressProviderSvc to ProxyProviderSvc
+     ServiceHandle<IService> ppSvc("ProxyProviderSvc","TEvent"+name);
+     AAH::setProperty( ppSvc , "ProviderNames", "['MetaDataSvc', 'AthenaPoolAddressProviderSvc']" );
    } else {
-    InitxAOD();
-    //add the access mode property to catalog 
-    m_joSvc->addPropertyToCatalogue( m_evtSelect.name() , IntegerProperty( "AccessMode" , int(mode) ) );
+     //switch selector type to xAODEventSelector:
+     m_evtSelect.setTypeAndName("Athena::xAODEventSelector/"+name+"_EventSelector");
    }
 
    //check if a SelectorType has been specified in the joSvc 
+   //should retire this code at some point (hangover from basicxAOD.opts)
    auto properties = m_joSvc->getProperties("TEvent");
    if(properties) {
       for(auto prop : *properties) {
@@ -67,20 +77,22 @@ TEvent::TEvent(EReadMode mode, const std::string& name) :
       }
    }
 
-   m_joSvc->addPropertyToCatalogue( m_evtLoop.name() , StringProperty( "ClearStorePolicy" , "BeginEvent") );
-   m_joSvc->addPropertyToCatalogue( m_evtLoop.name() , StringProperty( "EvtSel" , m_evtSelect.typeAndName() ) );
-   m_joSvc->addPropertyToCatalogue( m_evtLoop.name() , StringProperty( "EvtStore" , m_evtStore.typeAndName() ) );
-   m_joSvc->addPropertyToCatalogue( m_evtLoop.name() , StringProperty( "EventPrintoutInterval" , "999999999" ) );
+   AAH::setProperty( m_evtLoop , "ClearStorePolicy", "BeginEvent" );    //for interactive use of storegate
+   AAH::setProperty( m_evtLoop , "EvtSel", m_evtSelect.typeAndName() ); //connect loop to selector
+   AAH::setProperty( m_evtLoop , "EvtStore", m_evtStore.typeAndName() );//connect loop to store
+   AAH::setProperty( m_evtLoop , "EventPrintoutInterval", 999999999 ); //disable printout (speeds up loop)
 
    if(m_evtSelect.type()=="Athena::xAODEventSelector") {
-      m_joSvc->addPropertyToCatalogue( m_evtSelect.name() , BooleanProperty( "ReadMetaDataWithPool" , true) );
+     AAH::setProperty( m_evtSelect , "ReadMetaDataWithPool" , true); //uses hybrid xAOD reading by default
+     AAH::setProperty( m_evtSelect , "AccessMode" , int(mode) ); //sets the mode
    }
 
    //set outputlevels to WARNING 
-   m_joSvc->addPropertyToCatalogue( m_evtLoop.name() , IntegerProperty( "OutputLevel" , 4 ) );
-   m_joSvc->addPropertyToCatalogue( m_evtSelect.name() , IntegerProperty( "OutputLevel" , 4 ) );
-   m_joSvc->addPropertyToCatalogue( m_evtStore.name() , IntegerProperty( "OutputLevel" , 4 ) );
-   m_joSvc->addPropertyToCatalogue( m_activeStoreSvc.name() , IntegerProperty( "OutputLevel" , 4 ) );
+   AAH::setProperty( m_evtLoop, "OutputLevel", 4 );
+   AAH::setProperty( m_evtSelect, "OutputLevel", 4 );
+   AAH::setProperty( m_evtStore, "OutputLevel", 4 );
+   AAH::setProperty( m_activeStoreSvc, "OutputLevel", 4 );
+
    //suppress messages below WARNING too
    //do this here to stop some pre initialize INFO messages from showing
    ServiceHandle<IProperty> messageSvc("MessageSvc","");
@@ -119,8 +131,7 @@ StatusCode TEvent::readFrom( const char* file ) {
       std::cout << "Unable to change file after already reading" << std::endl;
       return StatusCode::FAILURE;
    }
-   std::string prop = "[";
-   bool hasFile(false);
+   std::vector<std::string> myFiles;
    //see if contains wildcard
    //separate by comma
    TString sFileIn(file);
@@ -133,20 +144,14 @@ StatusCode TEvent::readFrom( const char* file ) {
       std::unique_ptr<TObjArray> theFiles(gSystem->GetFromPipe(("ls " + std::string(file)).c_str()).Tokenize("\n"));
       for(int i=0;i<theFiles->GetEntries();i++) {
          //std::cout << "Adding " << dynamic_cast<TObjString*>(theFiles->At(i))->String().Data() << std::endl;
-         if(i != 0) prop += " , ";
-         prop += "'"; prop += gSystem->ExpandPathName(dynamic_cast<TObjString*>(theFiles->At(i))->String().Data()); prop += "'";
+	myFiles.push_back(gSystem->ExpandPathName(dynamic_cast<TObjString*>(theFiles->At(i))->String().Data()));
       }
      } else {
-       if(hasFile) prop += " , ";
-	prop += "'"; prop += gSystem->ExpandPathName(sFile.Data()); prop += "'";
+       myFiles.push_back( gSystem->ExpandPathName(sFile.Data()) );
      }
-     hasFile=true;
    }
 
-  
-   prop += "]";
-   //std::cout << prop << std::endl;
-   return m_joSvc->addPropertyToCatalogue( m_evtSelect.name() , StringProperty( "InputCollections" , prop ) );
+   return AAH::setProperty( m_evtSelect , "InputCollections" , myFiles );
 }
 
 StatusCode TEvent::readFrom(TChain* files) {
diff --git a/PhysicsAnalysis/POOLRootAccess/test/POOLRootAccess.xml b/PhysicsAnalysis/POOLRootAccess/test/POOLRootAccess.xml
index a4fff4ffbe326284b300cb50b9156cad14d0a5cf..392dc2f954f5799c9216afe771787db21330116b 100644
--- a/PhysicsAnalysis/POOLRootAccess/test/POOLRootAccess.xml
+++ b/PhysicsAnalysis/POOLRootAccess/test/POOLRootAccess.xml
@@ -13,9 +13,20 @@
       <errorMessage>FAILURE (ERROR)</errorMessage>
       <returnValue>0</returnValue>
     </expectations>
-    <postscript>rootmonitor.py --html ut_basicxAODRead_test.results.root</postscript>
+    <postscript>rootmonitor.py  --lower='{"speed1":50,"speed2":3200}'  --html ut_basicxAODRead_test.results.root</postscript>
   </TEST>
 
+  <TEST name="POOLRootAccess_python_basicRead_test" type="script" suite="ASG">
+    <options_atn>python ${ATN_PACKAGE}/test/ut_basicRead_test.py</options_atn>
+    <timelimit>10</timelimit>
+    <author> Will Buttinger </author>
+    <mailto> will@cern.ch </mailto>
+    <expectations>
+      <errorMessage>FAILURE (ERROR)</errorMessage>
+      <returnValue>0</returnValue>
+    </expectations>
+   </TEST>
+
 </atn>
 
 </unifiedTestConfiguration>
diff --git a/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.cxx b/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.cxx
index 6d9665d3b137a79f61ee06b54bba34925c15f84d..ce0f591d72fe6a335d78806c1195e7d5204d3dba 100644
--- a/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.cxx
+++ b/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.cxx
@@ -12,9 +12,11 @@
 #include "xAODRootAccess/Init.h"
 #include "xAODRootAccess/TEvent.h"
 
+#include "AthAnalysisBaseComps/AthAnalysisHelper.h"
+
 int main(int argc, char* argv[]) {
 
-   std::string whatToRead = "/r04/atlas/will/xAOD/data15_13TeV.periodD.physics_Main.PhysCont.DAOD_HIGG2D2.grp15_v01_p2425/*";
+   std::string whatToRead = "$ASG_TEST_FILE_MC";
    if(argc>1) whatToRead = argv[1];
 
    std::cout << "reading: " << whatToRead << std::endl; 
@@ -47,6 +49,12 @@ int main(int argc, char* argv[]) {
    //evt.setEvtSelProperty( "OutputLevel" , 3 );
 
    int maxEvt = evt.getEntries(); evt.getEntry(0);
+
+   //just a quick example of retrieving metadata
+   float beam_energy(0);
+   AAH::retrieveMetadata("/TagInfo","beam_energy",beam_energy,evt.inputMetaStore()); 
+   std::cout << "Beam energy = " << beam_energy << std::endl;
+
    TStopwatch st;
    st.Start();
    for(int i=0; i< maxEvt; i++) {
@@ -62,4 +70,4 @@ int main(int argc, char* argv[]) {
 
    return 0;
 
-}
\ No newline at end of file
+}
diff --git a/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.py b/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.py
index c2c5b53baba21e3c4355c7ba28e2edb4ba93777e..45bc85025c337317529e92786a6317c7410c2227 100644
--- a/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.py
+++ b/PhysicsAnalysis/POOLRootAccess/test/ut_basicRead_test.py
@@ -6,9 +6,20 @@ import ROOT
 evt = ROOT.POOL.TEvent()
 #evt = ROOT.POOL.TEvent(ROOT.POOL.TEvent.kClassAccess) #for faster xAOD reading
 
-evt.readFrom("$ASG_TEST_FILE_MC")
+import os
+if os.environ.has_key("ASG_TEST_FILE_MC"):
+    fname = "$ASG_TEST_FILE_MC"
+else:
+    fname = "/afs/cern.ch/atlas/maxidisk/d33/referencefiles/aod/AOD-devval-20160812/AOD-devval-20160812-full.pool.root"
+evt.readFrom(fname)
 
 for i in range(0,10): #use evt.getEntries() to read all
     evt.getEntry(i);
+
+    #normal retrieve method types a 'type' and 'key'
     ei = evt.retrieve("xAOD::EventInfo","EventInfo")
     print ei.eventNumber()
+
+    #possible (but slower) to retrieve just by 'key'
+    els = evt.get_item("Electrons")
+    for el in els: ROOT.xAOD.dump(el)
diff --git a/PhysicsAnalysis/POOLRootAccess/test/ut_basicxAODRead_test.cxx b/PhysicsAnalysis/POOLRootAccess/test/ut_basicxAODRead_test.cxx
index fbeecff748f55678723149c302d0d4e83a7b031e..d4a75dd14ce75221bf60662418e0a3d233faa66f 100644
--- a/PhysicsAnalysis/POOLRootAccess/test/ut_basicxAODRead_test.cxx
+++ b/PhysicsAnalysis/POOLRootAccess/test/ut_basicxAODRead_test.cxx
@@ -24,7 +24,11 @@ int main(int argc, char* argv[]) {
    xAOD::TEvent::EAuxMode accessMode2 = xAOD::TEvent::kClassAccess;
    POOL::TEvent::EReadMode accessMode = POOL::TEvent::kClassAccess;
 
-   std::string whatToRead = "$ASG_TEST_FILE_MC";
+   std::string whatToRead;
+   if (getenv("ASG_TEST_FILE_MC") != nullptr)
+     whatToRead = "$ASG_TEST_FILE_MC";
+   else
+     whatToRead = "/afs/cern.ch/user/a/asgbase/patspace/xAODs/r7725/mc15_13TeV.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.merge.AOD.e3698_s2608_s2183_r7725_r7676/AOD.07915862._000100.pool.root.1";
    if(argc>1) whatToRead = argv[1];
 
    std::cout << "reading: " << whatToRead << std::endl; 
@@ -116,7 +120,7 @@ int main(int argc, char* argv[]) {
   }
 
   TFile f1("ut_basicxAODRead_test.results.root","RECREATE");
-  TH1F* speed1 = new TH1F("speed1","xAODRootAcess Speed [Hz]",1,0,1);speed1->Sumw2();
+  TH1F* speed1 = new TH1F("speed1","xAODRootAccess Speed [Hz]",1,0,1);speed1->Sumw2();
   TH1F* speed2 = new TH1F("speed2","POOLRootAccess Speed [Hz]",1,0,1);speed2->Sumw2();
   speed1->SetBinContent(1,double(maxEvt2)/st2.RealTime());speed1->SetBinError(1,0.0001);
   speed2->SetBinContent(1,double(maxEvt)/st.RealTime());speed2->SetBinError(1,0.0001);
@@ -127,4 +131,4 @@ int main(int argc, char* argv[]) {
 
    return 0;
 
-}
\ No newline at end of file
+}