diff --git a/Database/AthenaRoot/AthenaRootComps/python/Configurables.py b/Database/AthenaRoot/AthenaRootComps/python/Configurables.py index 6b7928659700070807f3bf37c36870a23f3a07a5..ebc25426311490db92f2d83a345ed8a76af6aecd 100644 --- a/Database/AthenaRoot/AthenaRootComps/python/Configurables.py +++ b/Database/AthenaRoot/AthenaRootComps/python/Configurables.py @@ -4,40 +4,6 @@ # @purpose: customized Configurable classes for AthenaRootComps # @author: Sebastien Binet <binet@cern.ch> -## import the automatically generated Configurables -from AthenaRootCompsConf import TTreeEventSelector as _TTreeEventSelector - -class TTreeEventSelector(_TTreeEventSelector): - __slots__ = { '_svc_helper' : None } - - def __init__(self, name="TTreeEventSelector", **kw): - # init base class - kw['name'] = name - super(TTreeEventSelector, self).__init__(**kw) - return - - def setDefaults(cls, handle): - - ## continue, only if it is our Configurable - if not isinstance(handle, TTreeEventSelector): - return - - ## configure our helper service whose sole purpose is to be - ## initialized early to populate the THistSvc w/ TTrees/TChains - if 1: - from AthenaCommon.Configurable import Configurable - svc = Configurable.allConfigurables['TTreeEventSelectorHelperSvc'] - svc.InputCollections = handle.InputCollections[:] - svc.TupleName = handle.TupleName - svc.ActiveBranches = handle.ActiveBranches[:] - - ## - return - pass # class TTreeEventSelector - -### --------------------------------------------------------------------------- - - ### --------------------------------------------------------------------------- from OutputStreamAthenaRoot import createNtupleOutputStream diff --git a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventContext.cxx b/Database/AthenaRoot/AthenaRootComps/src/TTreeEventContext.cxx deleted file mode 100644 index 83a498a5d07011d9c14b9d3aca2a715cd2272bd5..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventContext.cxx +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TTreeEventContext.cxx -// Implementation file for class TTreeEventContext -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - - -// STL includes - -// Package includes -#include "TTreeEventContext.h" - -/////////////////////////////////////////////////////////////////// -// Public methods: -/////////////////////////////////////////////////////////////////// - -// Constructors -//////////////// -TTreeEventContext::TTreeEventContext( const IEvtSelector* selector ): - IEvtSelector::Context(), - m_selector( selector ) -{} - -TTreeEventContext::TTreeEventContext( const TTreeEventContext& ctxt ) : - IEvtSelector::Context(), - m_selector( ctxt.m_selector ) -{} - -TTreeEventContext& -TTreeEventContext::operator=(const TTreeEventContext& rhs) -{ - if (this == &rhs) { - return *this; - } - m_selector = rhs.m_selector; - return *this; -} - -// Destructor -/////////////// -TTreeEventContext::~TTreeEventContext() -{} - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Protected methods: -/////////////////////////////////////////////////////////////////// diff --git a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventContext.h b/Database/AthenaRoot/AthenaRootComps/src/TTreeEventContext.h deleted file mode 100644 index 3f20e1ae232d5cd3dd75797dc23d14d19acb6828..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventContext.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TTreeEventContext.h -// Header file for class TTreeEventContext -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ATHENAROOTCOMPS_TTREEEVENTCONTEXT_H -#define ATHENAROOTCOMPS_TTREEEVENTCONTEXT_H - -// STL includes -#include <string> - -// Gaudi includes -#include "GaudiKernel/IEvtSelector.h" - -// Forward declaration -class IOpaqueAddress; - -class TTreeEventContext : public IEvtSelector::Context -{ - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - /// Constructor with parameters: - TTreeEventContext( const IEvtSelector* selector ); - - /// copy constructor - TTreeEventContext( const TTreeEventContext& ctxt ); - - /// assignment operator - TTreeEventContext& operator=(const TTreeEventContext& rhs); - - /// Destructor: - virtual ~TTreeEventContext(); - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - virtual void* identifier() const; - - /////////////////////////////////////////////////////////////////// - // Private data: - /////////////////////////////////////////////////////////////////// - private: - - const IEvtSelector* m_selector; -}; - -/////////////////////////////////////////////////////////////////// -// Inline methods: -/////////////////////////////////////////////////////////////////// - -inline void* TTreeEventContext::identifier() const -{ return (void*)m_selector; } - -#endif //> ATHENAROOTCOMPS_TTREEEVENTCONTEXT_H diff --git a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelector.cxx b/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelector.cxx deleted file mode 100644 index 20d7c43ee1c4097f0a10d06a9e68925e57aefbc7..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelector.cxx +++ /dev/null @@ -1,628 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TTreeEventSelector.cxx -// Implementation file for class TTreeEventSelector -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - -// STL includes -#include <sstream> -#include <unordered_map> - -// ROOT includes -#include "TChain.h" -#include "TClass.h" -#include "TClassEdit.h" -#include "RootUtils/TBranchElementClang.h" -#include "TLeaf.h" -#include "TFile.h" - -// Framework includes -#include "GaudiKernel/ISvcLocator.h" -//#include "GaudiKernel/GenericAddress.h" -#include "GaudiKernel/StatusCode.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/ITHistSvc.h" -#include "GaudiKernel/System.h" -#include "AthenaKernel/IClassIDSvc.h" -#include "AthenaKernel/IDictLoaderSvc.h" - -// StoreGate includes -#include "StoreGate/StoreGate.h" -#include "SGTools/TransientAddress.h" -#include "SGTools/BuiltinsClids.h" // to make sure we have their clids -#include "SGTools/StlVectorClids.h" // to make sure we have their clids -#include "SGTools/StlMapClids.h" // to make sure we have their clids - -#include "SGTools/CLASS_DEF.h" - -#include "TObject.h" -CLASS_DEF( TObject, 74939790 , 1 ) - -// EventInfo includes -#include "EventInfo/EventInfo.h" -#include "EventInfo/EventType.h" -#include "EventInfo/EventID.h" - -// Package includes -#include "TTreeEventSelector.h" -#include "TTreeEventContext.h" -#include "TTreeEventSelectorHelperSvc.h" -#include "RootBranchAddress.h" - -namespace { - std::string - root_typename(const std::string& root_type_name) - { - static std::unordered_map<std::string,std::string> s; - static bool first = true; - if (first) { - first = false; - - s["Int_t"] = System::typeinfoName(typeid(Int_t)); - s["UInt_t"] = System::typeinfoName(typeid(UInt_t)); - - s["Long_t"] = System::typeinfoName(typeid(Long_t)); - s["ULong_t"] = System::typeinfoName(typeid(ULong_t)); - - s["Long64_t"] = System::typeinfoName(typeid(Long64_t)); - s["ULong64_t"] = System::typeinfoName(typeid(ULong64_t)); - - s["Float_t"] = System::typeinfoName(typeid(Float_t)); - s["Float16_t"] = System::typeinfoName(typeid(Float16_t)); - s["Double_t"] = System::typeinfoName(typeid(Double_t)); - s["Double32_t"] = System::typeinfoName(typeid(Double32_t)); - - s["Bool_t"] = System::typeinfoName(typeid(Bool_t)); - s["Char_t"] = System::typeinfoName(typeid(Char_t)); - s["UChar_t"] = System::typeinfoName(typeid(UChar_t)); - - s["Short_t"] = System::typeinfoName(typeid(Short_t)); - s["UShort_t"] = System::typeinfoName(typeid(UShort_t)); - - } - return s[root_type_name]; - } -} -/////////////////////////////////////////////////////////////////// -// Public methods: -/////////////////////////////////////////////////////////////////// - -// Constructors -//////////////// - -TTreeEventSelector::TTreeEventSelector( const std::string& name, - ISvcLocator* svcLoc ) : - AthService ( name, svcLoc ), - m_storeGate( "StoreGateSvc", name ), - m_clidsvc ( "ClassIDSvc", name ), - m_dictsvc ( "AthDictLoaderSvc", name ), - m_tupleSvc ( "THistSvc", name ), - m_nbrEvts ( 0 ), - m_totalNbrEvts( 0 ), - m_tuple ( 0 ), - m_rootAddresses () -{ - declareProperty( "InputCollections", - m_inputCollectionsName, - "List of input (ROOT) file names" ); - m_inputCollectionsName.declareUpdateHandler - ( &TTreeEventSelector::setupInputCollection, this ); - - declareProperty( "TupleName", - m_tupleName = "", - "Name of the TTree to load/read from input file(s)" ); - - declareProperty( "SkipEvents", - m_skipEvts = 0, - "Number of events to skip at the beginning" ); - - declareProperty( "ActiveBranches", - m_activeBranchNames, - "List of branch names to activate" ); -} - -// Destructor -/////////////// -TTreeEventSelector::~TTreeEventSelector() -{ - delete m_tuple; m_tuple = 0; -} - -StatusCode TTreeEventSelector::initialize() -{ - ATH_MSG_INFO ("Enter TTreeEventSelector initialization..."); - - // retrieve clidsvc - if ( !m_clidsvc.retrieve().isSuccess() ) { - ATH_MSG_ERROR - ("Could not retrieve [" << m_clidsvc.typeAndName() << "]"); - return StatusCode::FAILURE; - } - - // retrieve dictsvc - if ( !m_dictsvc.retrieve().isSuccess() ) { - ATH_MSG_ERROR - ("Could not retrieve [" << m_dictsvc.typeAndName() << "]"); - return StatusCode::FAILURE; - } - - // retrieve ITHistSvc - if ( !m_tupleSvc.retrieve().isSuccess() ) { - ATH_MSG_ERROR - ("Could not retrieve [" << m_tupleSvc.typeAndName() << "] !!"); - return StatusCode::FAILURE; - } - - if ( m_tupleName.value().empty() ) { - ATH_MSG_ERROR - ("You have to give a TTree name to read from the ROOT files !"); - return StatusCode::FAILURE; - } - - setupInputCollection( m_inputCollectionsName ); - const std::size_t nbrInputFiles = m_inputCollectionsName.value().size(); - if ( nbrInputFiles < 1 ) { - ATH_MSG_ERROR - ("You need to give at least 1 input file !!" << endmsg - << "(Got [" << nbrInputFiles << "] file instead !)"); - return StatusCode::FAILURE; - } else { - ATH_MSG_INFO - ("Selector configured to read [" << nbrInputFiles << "] file(s)..." - << endmsg - << " tuple [" << m_tupleName.value() << "]"); - } - - // retrieve the TTreeEventSelectorHelperSvc to make sure the TTree - // has been registered with the ITHistSvc - { - typedef ServiceHandle<TTreeEventSelectorHelperSvc> HelperSvc_t; - HelperSvc_t svc("TTreeEventSelectorHelperSvc", name()); - if ( !svc.retrieve().isSuccess() ) { - ATH_MSG_ERROR ("Could not retrieve [" << svc.typeAndName() << "] !!"); - return StatusCode::FAILURE; - } - } - - // load tree/chain - delete m_tuple; m_tuple = 0; - - { - std::ostringstream tupleName; - tupleName << "/temp/TTreeStream/" << m_tupleName.value(); - - const ITHistSvc* svc = &*m_tupleSvc; - TTree* tuple = 0; - if ( !svc->getTree(tupleName.str(), tuple).isSuccess() || - 0 == tuple ) { - ATH_MSG_ERROR - ("Could not re-access tuple at [" << tupleName.str() << "] !!"); - return StatusCode::FAILURE; - } - if ( 0 == (m_tuple = dynamic_cast<TChain*>(tuple)) ) { - delete tuple; tuple = 0; - ATH_MSG_ERROR ("Could not dyn-cast tuple to a TChain !"); - return StatusCode::FAILURE; - } - } - - // retrieve event store - // this needs to happen *after* having registered the n-tuple with the - // ITHistSvc service as our branches (which need a valid m_ntuple pointer) - // may be asked to be registered as we are a ProxyProvider. - // retrieving the event store will poke the ProxyProviderSvc... - if ( !m_storeGate.retrieve().isSuccess() ) { - ATH_MSG_ERROR - ("Could not retrieve [" << m_storeGate.typeAndName() << "] !!"); - return StatusCode::FAILURE; - } - - // get total number of events: - m_totalNbrEvts = m_tuple->GetEntries(); - ATH_MSG_INFO ("Total events: " << m_totalNbrEvts); - - if ( m_skipEvts >= m_totalNbrEvts ) { - ATH_MSG_ERROR - ("Number of events to skip (" << m_skipEvts << ") is greater than " - << "the total number of events in the input collections (" - << m_totalNbrEvts << ") !" - << endmsg - << "Please correct your jobOptions file"); - return StatusCode::FAILURE; - } - - // reset the list of branches - m_rootAddresses.clear(); - - // skip events we are asked to skip - m_nbrEvts += m_skipEvts; - - return StatusCode::SUCCESS; -} - -StatusCode TTreeEventSelector::finalize() -{ - ATH_MSG_INFO ("Finalize..."); - - if (msgLvl(MSG::DEBUG)) { - TObjArray *leaves = m_tuple->GetListOfLeaves(); - if (leaves) { - // loop over leaves - for (Int_t i = 0; i < leaves->GetEntries(); ++i) { - TLeaf *leaf = (TLeaf *)leaves->At(i); - TBranch *branch = leaf->GetBranch(); - if (branch) { - const char *brname = branch->GetName(); - if (m_tuple->GetBranchStatus(brname)) { - ATH_MSG_DEBUG("branch [" << brname << "] was active."); - } else { - ATH_MSG_DEBUG("branch [" << brname << "] was NOT active."); - } - } - } - } - } - - // Cleaning-up: make the tuple disappear from the tuple service's registery - if ( !m_tupleSvc->deReg( m_tuple ).isSuccess() ) { - ATH_MSG_WARNING - ("Could not unregister our (chain of) tuple(s) !" << endmsg - << "Tuple service may barf."); - } - - // FIXME: this should be tweaked/updated if/when a selection function - // or filtering predicate is applied (one day?) - ATH_MSG_INFO ("Total events read: " << (m_nbrEvts - m_skipEvts)); - return StatusCode::SUCCESS; -} - -// Query the interfaces. -// Input: riid, Requested interface ID -// ppvInterface, Pointer to requested interface -// Return: StatusCode indicating SUCCESS or FAILURE. -// N.B. Don't forget to release the interface after use!!! -StatusCode -TTreeEventSelector::queryInterface( const InterfaceID& riid, - void** ppvInterface ) -{ - if ( IEvtSelector::interfaceID().versionMatch(riid) ) { - *ppvInterface = dynamic_cast<IEvtSelector*>(this); - } else if ( IEventSeek::interfaceID().versionMatch(riid) ) { - *ppvInterface = dynamic_cast<IEventSeek*>(this); - } else { - // Interface is not directly available : try out a base class - return AthService::queryInterface(riid, ppvInterface); - } - addRef(); - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -StatusCode TTreeEventSelector::next( IEvtSelector::Context& ctx ) const -{ - return this->next(ctx, 0); -} - -StatusCode TTreeEventSelector::next( Context& ctx, int jump ) const -{ - ATH_MSG_DEBUG ("next(" << jump << ") : iEvt " << m_nbrEvts); - - // get evt context - TTreeEventContext* ct = dynamic_cast<TTreeEventContext*>(&ctx); - if ( 0 == ct ) { - ATH_MSG_ERROR ("Could not dyn-cast to TTreeEventContext !!"); - return StatusCode::FAILURE; - } - - // jump to right position - if ( ( (m_nbrEvts + jump) >= 0 ) && - ( (m_nbrEvts + jump) < m_totalNbrEvts ) ) { - // adjust pointer - m_nbrEvts += jump; - - // load data from tuple - if ( m_tuple->LoadTree (m_nbrEvts) < 0 ) { - ATH_MSG_ERROR - ("Problem loading tree for event [" << m_nbrEvts << "] !!"); - return StatusCode::FAILURE; - } else { - ATH_MSG_DEBUG("==> loaded-tree(" << m_nbrEvts << ")"); - } - - if ( m_tuple->GetEntry( m_nbrEvts ) < 0 ) { - ATH_MSG_ERROR - ("Problem retrieving data from tree for entry [" << m_nbrEvts - << "] !!"); - return StatusCode::FAILURE; - } else { - ATH_MSG_DEBUG("==> got-tree(" << m_nbrEvts << ")"); - } - ++m_nbrEvts; - - // FIXME: we should try to get the RunNumber/EventNumber from - // the ntuple if these branches exist... - - // event info - EventType* evtType = new EventType; - const std::size_t runNbr = 0; - EventInfo* evtInfo = new EventInfo( new EventID( runNbr, m_nbrEvts-1, 0 ), - evtType ); - if ( !m_storeGate->record( evtInfo, "TTreeEventInfo" ).isSuccess() ) { - ATH_MSG_ERROR ("Could not record TTreeEventInfo !"); - delete evtInfo; evtInfo = 0; - return StatusCode::FAILURE; - } - return StatusCode::SUCCESS; - } - - // still here ? So this is it. EOF. - return StatusCode::FAILURE; -} - -StatusCode -TTreeEventSelector::previous( IEvtSelector::Context& ctx ) const -{ - return next( ctx, -1 ); -} - -StatusCode -TTreeEventSelector::previous( Context& ctx, int jump ) const -{ - return next( ctx, -jump ); -} - -StatusCode -TTreeEventSelector::last( Context& /*ctxt*/ ) const -{ - ATH_MSG_ERROR ("............. Last Event Not Implemented ............."); - return StatusCode::FAILURE; -} - - -StatusCode -TTreeEventSelector::rewind( Context& /*ctxt*/ ) const -{ - ATH_MSG_ERROR - ("............. ::rewind(Context) Not Implemented ............."); - return StatusCode::FAILURE; -} - -StatusCode -TTreeEventSelector::createContext( Context*& refCtx ) const -{ - refCtx = new TTreeEventContext(this); - return StatusCode::SUCCESS; -} - -StatusCode -TTreeEventSelector::createAddress( const Context& /*refCtx*/, - IOpaqueAddress*& /*addr*/ ) const -{ - //std::cerr << "::TTES::createAddress()...\n"; - return StatusCode::SUCCESS; -} - -StatusCode -TTreeEventSelector::releaseContext( Context*& refCtxt ) const -{ - TTreeEventContext *ctx = dynamic_cast<TTreeEventContext*>(refCtxt); - if ( ctx ) { - delete ctx; ctx = 0; - return StatusCode::SUCCESS; - } - - return StatusCode::FAILURE; -} - -StatusCode -TTreeEventSelector::resetCriteria( const std::string&, Context& ) const -{ - ATH_MSG_ERROR ("............. resetCriteria Not Implemented ............."); - return StatusCode::FAILURE; -} - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/** - * @brief Seek to a given event number. - * @param evtnum The event number to which to seek. - */ -StatusCode -TTreeEventSelector::seek (int evtnum) -{ - - // jump to right position - if ( ( evtnum >= 0 ) && - ( evtnum < m_totalNbrEvts ) ) { - // adjust pointer - m_nbrEvts = evtnum; - - // load data from tuple - if ( m_tuple->LoadTree (m_nbrEvts) < 0 ) { - ATH_MSG_ERROR - ("Problem loading tree for event [" << m_nbrEvts << "] !!"); - return StatusCode::FAILURE; - } - - if ( m_tuple->GetEntry( m_nbrEvts ) < 0 ) { - ATH_MSG_ERROR - ("Problem retrieving data from tree for entry [" << m_nbrEvts - << "] !!"); - return StatusCode::FAILURE; - } - } else { - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; -} - -/** - * @brief return the current event number. - * @return The current event number. - */ -int -TTreeEventSelector::curEvent() const -{ - return m_nbrEvts; -} - -///@{ -/// @c IAddressProvider interface -///get all addresses from Provider : Called before Begin Event -StatusCode -TTreeEventSelector::preLoadAddresses(StoreID::type storeID, tadList& tads) -{ - // std::cerr << "TTES::preLoadAddresses(" << int(storeID) - // << "," << tads.size() - // << ")...\n"; - - return createRootBranchAddresses(storeID, tads); -} - -/// get all new addresses from Provider for this Event. -StatusCode -TTreeEventSelector::loadAddresses(StoreID::type /*storeID*/, tadList& /*tads*/) -{ - // do nothing. already done by preLoadAddresses. - return StatusCode::SUCCESS; -} - -/// update a transient Address -StatusCode -TTreeEventSelector::updateAddress(StoreID::type /*storeID*/, SG::TransientAddress* tad, - const EventContext& /*ctx*/) -{ - // FIXME: check if we couldn't just use TTree::GetListOfBranches... - // check memory usage/cpu consumption tradeoff - - // check if this tad is known to us. - if (tad) { - if ( m_rootAddresses.find(tad) != m_rootAddresses.end() ) { - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG("updateAddress: address [" << tad->clID() << "#" - << tad->name() << ") NOT known to us."); - return StatusCode::FAILURE; - } - - // do nothing. - return StatusCode::SUCCESS; -} -///@} - -/////////////////////////////////////////////////////////////////// -// Protected methods: -/////////////////////////////////////////////////////////////////// - -/// callback to synchronize the list of input files -void -TTreeEventSelector::setupInputCollection( Property& /*inputCollectionsName*/ ) -{ - // nothing ? - return; -} - -StatusCode -TTreeEventSelector::createRootBranchAddresses(StoreID::type storeID, - tadList &tads) -{ - if (storeID != StoreID::EVENT_STORE) { - ATH_MSG_INFO("-- not the event-store --"); - return(StatusCode::SUCCESS); - } - - if (0 == m_tuple) { - ATH_MSG_ERROR("null pointer to n-tuple !"); - return StatusCode::FAILURE; - } - - TObjArray *leaves = m_tuple->GetListOfLeaves(); - if (!leaves) { - ATH_MSG_INFO("no leaves!!"); - return StatusCode::SUCCESS; - } - - // loop over leaves - for (Int_t i = 0; i < leaves->GetEntries(); ++i) { - TLeaf *leaf = (TLeaf *)leaves->At(i); - TBranch *branch = leaf->GetBranch(); - if (branch) { - - CLID id = 0; - const void* value_ptr = m_tuple; - const std::string type_name = leaf->GetTypeName(); - const std::string br_name = branch->GetName(); - const std::string sg_key = br_name;//m_tupleName.value()+"/"+br_name; - TClass *cls = TClass::GetClass(type_name.c_str()); - const std::type_info *ti = 0; - - if (cls) { - ti = cls->GetTypeInfo(); - // first, try to load a dict for that class... - if (ti) { - m_dictsvc->load_type(*ti); - } - if (!ti) { - ATH_MSG_WARNING("could not find a type-info for [" << - type_name << "]"); - continue; - } - std::string ti_typename = System::typeinfoName(*ti); - if (!m_clidsvc->getIDOfTypeInfoName(ti_typename, id) - .isSuccess()) { - // try another one... - ti_typename = TClassEdit::ShortType(ti_typename.c_str(), - TClassEdit::kDropAllDefault); - if (!m_clidsvc->getIDOfTypeInfoName(ti_typename, id) - .isSuccess()) { - ATH_MSG_INFO("** could not find a CLID from type-info [" - << System::typeinfoName(*ti) << "]"); - ATH_MSG_INFO("** could not find a CLID from type-info-alias [" - << ti_typename << "]"); - continue; - } - } - } else { - // probably a built-in type... - if (!m_clidsvc->getIDOfTypeName(::root_typename(type_name), id) - .isSuccess()) { - ATH_MSG_INFO("** could not find a CLID for type-name [" - << type_name << "]"); - continue; - } - } - if (id == 0) { - ATH_MSG_INFO("** could not find a CLID for type-name [" - << type_name << "]"); - continue; - } - Athena::RootBranchAddress* addr = new Athena::RootBranchAddress - (ROOT_StorageType, id, - m_tupleName.value(), - br_name, - (unsigned long)(value_ptr), - (unsigned long)(m_nbrEvts-1)); - SG::TransientAddress* taddr = new SG::TransientAddress - (id, sg_key, addr); - taddr->setProvider(this, storeID); - taddr->clearAddress(false); - tads.push_back(taddr); - // note: we can store this taddr *b/c* we don't clearAddress it - // ie: b/c we just called clearAddress(false) so it will be recycled - // over the events. - m_rootAddresses.insert(taddr); - } - } - return StatusCode::SUCCESS; -} diff --git a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelector.h b/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelector.h deleted file mode 100644 index 4ffbf356442aaef2655e52298db98a15c846dd79..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelector.h +++ /dev/null @@ -1,184 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TTreeEventSelector.h -// Header file for class TTreeEventSelector -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ATHENAROOTCOMPS_TTREEEVENTSELECTOR_H -#define ATHENAROOTCOMPS_TTREEEVENTSELECTOR_H - -// framework includes -#include "AthenaBaseComps/AthService.h" -#include "GaudiKernel/IEvtSelector.h" -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/Property.h" -#include "GaudiKernel/MsgStream.h" -#include "AthenaKernel/IEventSeek.h" -#include "AthenaKernel/IAddressProvider.h" - -#include <unordered_set> - -// Forward declaration -class ISvcLocator; -class StoreGateSvc; -class ITHistSvc; -class TChain; -class IClassIDSvc; -class IDictLoaderSvc; - -/** @brief Class implementing the GAUDI @c IEvtSelector interface using - * ROOT @c TTree as a backend - */ -class TTreeEventSelector : - virtual public IEvtSelector, - virtual public IEventSeek, - virtual public IAddressProvider, - virtual public AthService -{ - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - /// Constructor with parameters: - TTreeEventSelector( const std::string& name, ISvcLocator* svcLoc ); - - /// Destructor: - virtual ~TTreeEventSelector(); - - // Athena hooks - virtual StatusCode initialize(); - virtual StatusCode finalize(); - virtual StatusCode queryInterface( const InterfaceID& riid, - void** ppvInterface ); - - ///@{ - /// @c IEvtSelector interface - virtual StatusCode createContext( Context*& refpCtxt ) const; - - virtual StatusCode last( Context& refContext ) const; - virtual StatusCode next( Context& refCtxt ) const; - virtual StatusCode next( Context& refCtxt, int jump ) const; - virtual StatusCode previous( Context& refCtxt ) const; - virtual StatusCode previous( Context& refCtxt, int jump ) const; - virtual StatusCode rewind( Context& refCtxt ) const; - - virtual StatusCode createAddress( const Context& refCtxt, - IOpaqueAddress*& ) const; - virtual StatusCode releaseContext( Context*& refCtxt ) const; - virtual StatusCode resetCriteria( const std::string& cr, - Context& ctx )const; - ///@} - - ///@{ - /// @c IEventSeek interface - /** - * @brief Seek to a given event number. - * @param evtnum The event number to which to seek. - */ - virtual StatusCode seek (int evtnum); - - /** - * @brief return the current event number. - * @return The current event number. - */ - virtual int curEvent () const; - ///@} - - ///@{ - /// @c IAddressProvider interface - ///get all addresses from Provider : Called before Begin Event - virtual - StatusCode preLoadAddresses(StoreID::type storeID, tadList& list); - - /// get all new addresses from Provider for this Event. - virtual - StatusCode loadAddresses(StoreID::type storeID, tadList& list); - - /// update a transient Address - virtual - StatusCode updateAddress(StoreID::type storeID, SG::TransientAddress* tad, - const EventContext& ctx); - ///@} - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Private methods: - /////////////////////////////////////////////////////////////////// - private: - - /// callback to synchronize the list of input files - void setupInputCollection( Property& inputCollectionsName ); - - /// helper method to create proxies - StatusCode createRootBranchAddresses(StoreID::type storeID, - tadList &tads); - - /////////////////////////////////////////////////////////////////// - // Private data: - /////////////////////////////////////////////////////////////////// - private: - - typedef ServiceHandle<StoreGateSvc> StoreGateSvc_t; - /// Pointer to the @c StoreGateSvc event store - StoreGateSvc_t m_storeGate; - - typedef ServiceHandle<IClassIDSvc> ICLIDSvc_t; - /// Pointer to the @c IClassIDSvc - ICLIDSvc_t m_clidsvc; - - typedef ServiceHandle<IDictLoaderSvc> IDictSvc_t; - /// Pointer to the @c IDictLoaderSvc - IDictSvc_t m_dictsvc; - - typedef ServiceHandle<ITHistSvc> ITHistSvc_t; - // /// Pointer to the @c ITHistSvc containing the @c TTree - ITHistSvc_t m_tupleSvc; - - /// List of input files containing @c TTree - StringArrayProperty m_inputCollectionsName; - - /// Name of @c TTree to load from collection of input files - StringProperty m_tupleName; - - /// List of branches to activate in the @c TTree - StringArrayProperty m_activeBranchNames; - - /// Number of events to skip at the beginning - long m_skipEvts; - - /// Number of Events read so far. - mutable long m_nbrEvts; - - /// Total number of events - long m_totalNbrEvts; - - /// The @c TTree we are reading from file(s) - TChain* m_tuple; - - /** The (python) selection function to apply on the @c TChain we are reading - */ - //PyObject* m_pySelectionFct; - - // the list of transient addresses we "manage" or know about - // these addresses are the actual TTree's branch names - std::unordered_set<SG::TransientAddress*> m_rootAddresses; -}; - -/////////////////////////////////////////////////////////////////// -// Inline methods: -/////////////////////////////////////////////////////////////////// - -#endif //> ATHENAROOTCOMPS_TTREEEVENTSELECTOR_H diff --git a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelectorHelperSvc.cxx b/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelectorHelperSvc.cxx deleted file mode 100644 index 45e7dc4774f530f32ed036b8648e416f692fe5e5..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelectorHelperSvc.cxx +++ /dev/null @@ -1,193 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TTreeEventSelectorHelperSvc.cxx -// Implementation file for class TTreeEventSelectorHelperSvc -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - -// AthenaRootComps includes -#include "TTreeEventSelectorHelperSvc.h" - -// STL includes -#include <sstream> - -// FrameWork includes -#include "GaudiKernel/Property.h" -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/ITHistSvc.h" - -// ROOT includes -#include <TChain.h> - -/////////////////////////////////////////////////////////////////// -// Public methods: -/////////////////////////////////////////////////////////////////// - -// Constructors -//////////////// -TTreeEventSelectorHelperSvc::TTreeEventSelectorHelperSvc -( const std::string& name, ISvcLocator* pSvcLocator ) : - ::AthService( name, pSvcLocator ) -{ - // - // Property declaration - // - //declareProperty( "Property", m_nProperty ); - - declareProperty( "InputCollections", - m_inputCollectionsName, - "List of input (ROOT) file names" ); - m_inputCollectionsName.declareUpdateHandler - ( &TTreeEventSelectorHelperSvc::setupInputCollection, this ); - - declareProperty( "TupleName", - m_tupleName = "", - "Name of the TTree to load/read from input file(s)" ); - - declareProperty( "ActiveBranches", - m_activeBranchNames, - "List of branch names to activate" ); - -} - -// Destructor -/////////////// -TTreeEventSelectorHelperSvc::~TTreeEventSelectorHelperSvc() -{} - -// Athena Service's Hooks -//////////////////////////// -StatusCode TTreeEventSelectorHelperSvc::initialize() -{ - ATH_MSG_INFO ("Initializing " << name() << "..." - << endmsg - << "loading chain of trees into ITHistSvc..."); - - if ( !configureTupleSvc().isSuccess() ) { - ATH_MSG_ERROR ("Could not load TChain into ITHistSvc !"); - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; -} - -StatusCode TTreeEventSelectorHelperSvc::finalize() -{ - ATH_MSG_INFO ("Finalizing " << name() << "..."); - return StatusCode::SUCCESS; -} - -// Query the interfaces. -// Input: riid, Requested interface ID -// ppvInterface, Pointer to requested interface -// Return: StatusCode indicating SUCCESS or FAILURE. -// N.B. Don't forget to release the interface after use!!! -StatusCode -TTreeEventSelectorHelperSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) -{ - if ( TTreeEventSelectorHelperSvc::interfaceID().versionMatch(riid) ) { - *ppvInterface = dynamic_cast<TTreeEventSelectorHelperSvc*>(this); - } else { - // Interface is not directly available : try out a base class - return ::AthService::queryInterface(riid, ppvInterface); - } - addRef(); - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/// callback to synchronize the list of input files -void -TTreeEventSelectorHelperSvc::setupInputCollection( Property& /*inputCollectionsName*/ ) -{ - // nothing ? - return; -} - -StatusCode -TTreeEventSelectorHelperSvc::configureTupleSvc() -{ - // retrieve ITHistSvc - ServiceHandle<ITHistSvc> svc( "THistSvc/THistSvc", this->name() ); - if ( !svc.retrieve().isSuccess() ) { - ATH_MSG_ERROR ("Could not retrieve [" << svc.typeAndName() << "] !"); - return StatusCode::FAILURE; - } - - if ( m_tupleName.empty() ) { - ATH_MSG_ERROR - ("You have to give a TTree name to read from the ROOT files !"); - return StatusCode::FAILURE; - } - - setupInputCollection( m_inputCollectionsName ); - const std::size_t nbrInputFiles = m_inputCollectionsName.value().size(); - if ( nbrInputFiles < 1 ) { - ATH_MSG_ERROR - ("You need to give at least 1 input file !!" << endmsg - << "(Got [" << nbrInputFiles << "] file instead !)"); - return StatusCode::FAILURE; - } - - TChain* tuple = new TChain( m_tupleName.c_str() ); - for ( std::size_t iFile = 0; iFile != nbrInputFiles; ++iFile ) { - const std::string& fileName = m_inputCollectionsName.value()[iFile]; - ATH_MSG_DEBUG ("adding [" << fileName << "]"); - tuple->Add( fileName.c_str() ); - } - // fixup TChain index - tuple->SetTreeIndex( 0 ); - - // by default, disable all branches: - // clients will have to explicitly tell which ones they want to read - tuple->SetBranchStatus("*",0); - - // and activate the one we have been told to - for ( std::size_t i = 0, iMax = m_activeBranchNames.size(); - i != iMax; - ++i ) { - tuple->SetBranchStatus( m_activeBranchNames[i].c_str(), 1 ); - } - - // register our tuple under stream 'temp' (in-memory special stream) - // ! don't forget to unregister it ! - // (should be done in TTreeEventSelector::finalize()) - std::ostringstream tupleName; - tupleName << "/temp/TTreeStream/" << tuple->GetName(); - if ( !svc->regTree( tupleName.str(), tuple ).isSuccess() ) { - ATH_MSG_ERROR ("Couldn't register (chain of) tuple(s)"); - delete tuple; tuple =0; - return StatusCode::FAILURE; - } - - // we leak the TChain here. - // ownership is relinquinshed to TTreeEventSelector. - tuple = 0; - - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////// -// Protected methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - - diff --git a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelectorHelperSvc.h b/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelectorHelperSvc.h deleted file mode 100644 index 167072d4bfb75e9a2b4b3390beca479e9d2dce59..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TTreeEventSelectorHelperSvc.h +++ /dev/null @@ -1,120 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TTreeEventSelectorHelperSvc.h -// Header file for class TTreeEventSelectorHelperSvc -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ATHENAROOTCOMPS_TTREEEVENTSELECTORHELPERSVC_H -#define ATHENAROOTCOMPS_TTREEEVENTSELECTORHELPERSVC_H 1 - -// STL includes -#include <string> -#include <vector> - -// FrameWork includes -#include "AthenaBaseComps/AthService.h" - -// GaudiKernel -#include "GaudiKernel/IInterface.h" - -// Forward declaration -class ISvcLocator; -template <class TYPE> class SvcFactory; -class TTreeEventSelector; - - -class TTreeEventSelectorHelperSvc - : public ::AthService -{ - friend class SvcFactory<TTreeEventSelectorHelperSvc>; - friend class TTreeEventSelector; - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - // Copy constructor: - - /// Constructor with parameters: - TTreeEventSelectorHelperSvc( const std::string& name, ISvcLocator* pSvcLocator ); - - /// Destructor: - virtual ~TTreeEventSelectorHelperSvc(); - - // Assignment operator: - //TTreeEventSelectorHelperSvc &operator=(const TTreeEventSelectorHelperSvc &alg); - - /// Gaudi Service Implementation - //@{ - virtual StatusCode initialize(); - virtual StatusCode finalize(); - virtual StatusCode queryInterface( const InterfaceID& riid, - void** ppvInterface ); - //@} - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - static const InterfaceID& interfaceID(); - - /////////////////////////////////////////////////////////////////// - // Protected methods: - /////////////////////////////////////////////////////////////////// - protected: - - /// callback to synchronize the list of input files - void setupInputCollection( Property& inputCollectionsName ); - - /// configure the tuple service to deliver our tree to clients (if any) - StatusCode configureTupleSvc(); - - /////////////////////////////////////////////////////////////////// - // Private data: - /////////////////////////////////////////////////////////////////// - private: - - /// Default constructor: - TTreeEventSelectorHelperSvc(); - - // Containers - - /// List of input files containing @c TTree - StringArrayProperty m_inputCollectionsName; - - /// name of the @c TChain in the chain of ROOT files to read in - std::string m_tupleName; - - /// list of branches to activate in the @c TChain - /// The default is to have no active branch and let the user activate - /// the ones she needs (for 'obvious' performance reasons) - std::vector<std::string> m_activeBranchNames; - -}; - -// I/O operators -////////////////////// - -/////////////////////////////////////////////////////////////////// -// Inline methods: -/////////////////////////////////////////////////////////////////// - -inline const InterfaceID& TTreeEventSelectorHelperSvc::interfaceID() -{ - static const InterfaceID IID_TTreeEventSelectorHelperSvc - ("TTreeEventSelectorHelperSvc", 1, 0); - return IID_TTreeEventSelectorHelperSvc; -} - - - -#endif //> !ATHENAROOTCOMPS_TTREEEVENTSELECTORHELPERSVC_H diff --git a/Database/AthenaRoot/AthenaRootComps/src/TreeNotifier.cxx b/Database/AthenaRoot/AthenaRootComps/src/TreeNotifier.cxx deleted file mode 100644 index ebb04f79a5bda41e2817c86768d561f81ee40f1b..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TreeNotifier.cxx +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TreeNotifier.cxx -// Implementation file for class TreeNotifier -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - -// AthenaRootComps includes -#include "TreeNotifier.h" - -// STL includes -#include <iostream> - -// ROOT includes -#include "TTree.h" - -namespace Athena { - -/////////////////////////////////////////////////////////////////// -// Public methods: -/////////////////////////////////////////////////////////////////// - -/// Default constructor: -TreeNotifier::TreeNotifier() : - TObject(), - m_notify_chain(NULL) -{} - - -/// Constructor with parameters: -TreeNotifier::TreeNotifier(TTree *ntuple) : - TObject(), - m_notify_chain( ntuple != NULL ? ntuple->GetNotify() : NULL) -{} - - /// Destructor: -TreeNotifier::~TreeNotifier() -{ - //if (m_notify_chain) -} - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/** - * @brief Standard Root notify routine. - * - * Called by ROOT when the chain switched trees or when a new file kicked in. - * ie: called whenever the (branch) addresses need to be updated. - * - */ -Bool_t -TreeNotifier::Notify() -{ - std::cerr << "::TN:: --Notify--\n"; - // propagate the notification - if (m_notify_chain) { - return m_notify_chain->Notify(); - } - return true; -} - -} //> end namespace Athena diff --git a/Database/AthenaRoot/AthenaRootComps/src/TreeNotifier.h b/Database/AthenaRoot/AthenaRootComps/src/TreeNotifier.h deleted file mode 100644 index 80da478ffb8e422bc475f03c5d6f83ad765213aa..0000000000000000000000000000000000000000 --- a/Database/AthenaRoot/AthenaRootComps/src/TreeNotifier.h +++ /dev/null @@ -1,87 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// TreeNotifier.h -// Header file for class TreeNotifier -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ATHENAROOTCOMPS_ATHENA_TREENOTIFIER_H -#define ATHENAROOTCOMPS_ATHENA_TREENOTIFIER_H 1 - -// STL includes -#include <iosfwd> - -// Gaudi includes - -// ROOT includes -#include "TObject.h" - -// Forward declaration -class TTree; - -namespace Athena { - -class TreeNotifier : public ::TObject -{ - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - /// Default constructor: - TreeNotifier(); - - /// Constructor with parameters: - TreeNotifier(TTree *ntuple); - - /// Destructor: - virtual ~TreeNotifier(); - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - /** - * @brief Standard Root notify routine. - * - */ - Bool_t Notify(); - - /////////////////////////////////////////////////////////////////// - // Private methods: - /////////////////////////////////////////////////////////////////// - private: - - // disallow copy - - /// Copy constructor: - TreeNotifier( const TreeNotifier& rhs ); // not implemented - - /// Assignment operator: - TreeNotifier& operator=( const TreeNotifier& rhs ); //not implemented - - /////////////////////////////////////////////////////////////////// - // Private data: - /////////////////////////////////////////////////////////////////// - private: - - /// For propagating notification requests. - TObject *m_notify_chain; -}; - -/////////////////////////////////////////////////////////////////// -// Inline methods: -/////////////////////////////////////////////////////////////////// -//std::ostream& operator<<( std::ostream& out, const TreeNotifier& o ); - -} //> end namespace Athena - -#endif //> !ATHENAROOTCOMPS_ATHENA_TREENOTIFIER_H diff --git a/Database/AthenaRoot/AthenaRootComps/src/components/AthenaRootComps_entries.cxx b/Database/AthenaRoot/AthenaRootComps/src/components/AthenaRootComps_entries.cxx index 883ae20e28b5d88bc0348e365a1faa0b9ae444b5..088d2609450c30919cd856ccd91be230105227bf 100644 --- a/Database/AthenaRoot/AthenaRootComps/src/components/AthenaRootComps_entries.cxx +++ b/Database/AthenaRoot/AthenaRootComps/src/components/AthenaRootComps_entries.cxx @@ -1,6 +1,4 @@ #include "GaudiKernel/DeclareFactoryEntries.h" -#include "../TTreeEventSelector.h" -#include "../TTreeEventSelectorHelperSvc.h" #include "../NtupleCnvSvc.h" //#include "../LeafCnv.h" #include "../RootOutputStreamTool.h" @@ -23,8 +21,6 @@ #include "../xAODCnv.h" #include "../xAODEventSelector.h" -DECLARE_SERVICE_FACTORY( TTreeEventSelector ) -DECLARE_SERVICE_FACTORY( TTreeEventSelectorHelperSvc ) DECLARE_NAMESPACE_SERVICE_FACTORY(Athena, NtupleCnvSvc) //DECLARE_NAMESPACE_CONVERTER_FACTORY (Athena, LeafCnv) @@ -47,8 +43,6 @@ DECLARE_NAMESPACE_ALGORITHM_FACTORY( Athena, RootAsciiDumperAlgHandle ) DECLARE_SERVICE_FACTORY( IoSvc ) DECLARE_FACTORY_ENTRIES( AthenaRootComps ) { - DECLARE_SERVICE( TTreeEventSelector ) - DECLARE_SERVICE( TTreeEventSelectorHelperSvc ) DECLARE_NAMESPACE_SERVICE(Athena, NtupleCnvSvc) DECLARE_NAMESPACE_CONVERTER(Athena, LeafCnv) DECLARE_NAMESPACE_CONVERTER(Athena, xAODCnv)