diff --git a/Control/AthViews/AthViews/SimpleView.h b/Control/AthViews/AthViews/SimpleView.h index c689a45dbd44ca05350172d8b7130b72577c6812..908acfdbe4a9aa3aae3c2605cb447e7fd35019d0 100644 --- a/Control/AthViews/AthViews/SimpleView.h +++ b/Control/AthViews/AthViews/SimpleView.h @@ -35,7 +35,7 @@ class SimpleView : public IProxyDict public: DeclareInterfaceID( SimpleView, 2, 0 ); SimpleView(); - SimpleView( std::string Name ); + SimpleView( std::string Name, bool AllowFallThrough=false ); virtual ~SimpleView(); /// get default proxy with given id. Returns 0 to flag failure @@ -182,7 +182,7 @@ class SimpleView : public IProxyDict ServiceHandle< StoreGateSvc > m_store; std::string m_name; std::vector<const IProxyDict*> m_parents; - + bool m_allowFallThrough; }; diff --git a/Control/AthViews/src/SimpleView.cxx b/Control/AthViews/src/SimpleView.cxx index 62e7a649328c2ec041076347fb09b85f7c6e347c..438a236b3799811ca6202b2eaad683e56e0e6e7d 100644 --- a/Control/AthViews/src/SimpleView.cxx +++ b/Control/AthViews/src/SimpleView.cxx @@ -10,13 +10,15 @@ using namespace std; SimpleView::SimpleView() : m_store( "StoreGateSvc", "SimpleView" ), - m_name( "SimpleView" ) + m_name( "SimpleView" ), + m_allowFallThrough( false ) { } -SimpleView::SimpleView( std::string Name ) : +SimpleView::SimpleView( std::string Name, bool AllowFallThrough ) : m_store( "StoreGateSvc", "SimpleView" ), - m_name( Name ) + m_name( Name ), + m_allowFallThrough( AllowFallThrough ) { } @@ -70,6 +72,13 @@ SG::DataProxy * SimpleView::proxy( const CLID& id, const std::string& key ) cons throw std::runtime_error("Duplicate object CLID:"+ std::to_string(id) + " key: " + key + " found in views: " + name()+ " and parent " + parent->name() ); } // else search further } + + //Look in the default store - change to fix IDC + if ( m_allowFallThrough and not local ) + { + return m_store->proxy( id, key ); + } + return local; // can be the nullptr still }