ATLAS Offline Software
Public Member Functions | Protected Attributes | List of all members
SimpleView Class Reference

Very simple pass-through implementation of IProxyDict. More...

#include <SimpleView.h>

Inheritance diagram for SimpleView:
Collaboration diagram for SimpleView:

Public Member Functions

 SimpleView ()=delete
 
 SimpleView (std::string const &Name, bool AllowFallThrough=true, std::string const &storeName="StoreGateSvc")
 
virtual ~SimpleView ()
 
std::string viewKey (const std::string &key) const
 Construct a key as used in the parent store. More...
 
virtual void linkParent (const IProxyDict *parent)
 links to the previously used views through these parent views additional data objects become available More...
 
virtual const std::set< const SG::View * > & getParentLinks () const
 returns the links to the previously used views More...
 
void setFilter (std::vector< std::string > const &inputFilter)
 Set a filtering rule for anything loaded via fallthrough. More...
 
virtual SG::DataProxydeep_proxy (const void *const pTransient) const
 get proxy for a given data object address in memory, but performs a deep search among all possible 'symlinked' containers TEMPORARY: This method is going away. More...
 
virtual SG::DataProxyproxy_exact (SG::sgkey_t sgkey) const
 Get proxy given a hashed key+clid. More...
 
virtual SG::DataProxyproxy (const CLID &id, const std::string &key) const
 Get proxy with given id and key. More...
 
virtual SG::DataProxyfindProxy (const CLID &id, const std::string &key, const bool allowFallThrough) const
 
virtual SG::DataProxyproxy (const void *const pTransient) const
 Get a proxy referencing a given transient object. More...
 
virtual std::vector< const SG::DataProxy * > proxies () const
 Return the list of all current proxies in store. More...
 
virtual StatusCode addToStore (CLID id, SG::DataProxy *proxy)
 Add a new proxy to the store. More...
 
virtual SG::DataProxyrecordObject (SG::DataObjectSharedPtr< DataObject > obj, const std::string &key, bool allowMods, bool returnExisting)
 Record an object in the store. More...
 
virtual void boundHandle (IResetable *handle)
 Tell the store that a handle has been bound to a proxy. More...
 
virtual void unboundHandle (IResetable *handle)
 Tell the store that a handle has been unbound from a proxy. More...
 
virtual bool tryELRemap (sgkey_t sgkey_in, size_t index_in, sgkey_t &sgkey_out, size_t &index_out)
 Test to see if the target of an ElementLink has moved. More...
 
virtual const std::string & name () const
 
virtual IStringPool::sgkey_t stringToKey (const std::string &str, CLID clid)
 
virtual const std::string * keyToString (IStringPool::sgkey_t key) const
 
virtual const std::string * keyToString (IStringPool::sgkey_t key, CLID &clid) const
 
virtual void registerKey (IStringPool::sgkey_t key, const std::string &str, CLID clid)
 
std::string dump (const std::string &indent="") const
 
void setROI (const ElementLink< TrigRoiDescriptorCollection > &roi)
 
const ElementLink< TrigRoiDescriptorCollection > & getROI () const
 

Protected Attributes

ServiceHandle< StoreGateSvcm_store
 
ElementLink< TrigRoiDescriptorCollectionm_roi
 
std::string m_name
 
std::set< const SG::View * > m_parents
 
std::vector< std::string > m_fallFilter
 
bool m_allowFallThrough
 

Detailed Description

Very simple pass-through implementation of IProxyDict.

Most of the methods are copypasta and don't do anything

Author
Ben Wynne - ATLAS

Definition at line 34 of file SimpleView.h.

Constructor & Destructor Documentation

◆ SimpleView() [1/2]

SimpleView::SimpleView ( )
delete

◆ SimpleView() [2/2]

SimpleView::SimpleView ( std::string const Name,
bool  AllowFallThrough = true,
std::string const storeName = "StoreGateSvc" 
)

Definition at line 10 of file SimpleView.cxx.

10  :
11  m_store( storeName, Name ),
12  m_roi(),
13  m_name( Name ),
14  m_allowFallThrough( AllowFallThrough )
15 {
16 }

◆ ~SimpleView()

SimpleView::~SimpleView ( )
virtual

Definition at line 18 of file SimpleView.cxx.

19 {
20 }

Member Function Documentation

◆ addToStore()

StatusCode SimpleView::addToStore ( CLID  id,
SG::DataProxy proxy 
)
virtual

Add a new proxy to the store.

Parameters
idCLID as which the proxy should be added.
proxyThe proxy to add.

Simple addition of a proxy to the store. The key is taken as the primary key of the proxy. Does not handle things like overwrite, history, symlinks, etc. Should return failure if there is already an entry for this clid/key.

Definition at line 146 of file SimpleView.cxx.

147 {
148  return m_store->addToStore( id, proxy );
149 }

◆ boundHandle()

void SimpleView::boundHandle ( IResetable handle)
virtual

Tell the store that a handle has been bound to a proxy.

Parameters
handleThe handle that was bound. The default implementation does nothing.

Definition at line 189 of file SimpleView.cxx.

190 {
191  return m_store->boundHandle( handle );
192 }

◆ deep_proxy()

virtual SG::DataProxy* SimpleView::deep_proxy ( const void *const  pTransient) const
inlinevirtual

get proxy for a given data object address in memory, but performs a deep search among all possible 'symlinked' containers TEMPORARY: This method is going away.

Definition at line 71 of file SimpleView.h.

72  { return proxy (pTransient); }

◆ dump()

std::string SimpleView::dump ( const std::string &  indent = "") const

Definition at line 237 of file SimpleView.cxx.

237  {
238 
239  // Dump view contents
240  std::string ret = indent + "Dump " + name() + "\n";
241  ret += indent + "[";
242  for ( const SG::DataProxy* dp: proxies() ) {
243  if ( dp->name().find( name() ) == 0 )
244  ret += " " + dp->name();
245  }
246  ret += " ]\n";
247 
248  // Dump parent views
249  if ( m_parents.size() ) ret += indent + "Parents:\n";
250  for ( auto p : m_parents ) {
251  ret += p->dump( indent + " " );
252  }
253 
254  // Fallthrough
255  if ( indent == "" ) {
256  if ( m_allowFallThrough ) {
257  ret += indent + "May access main store: " + m_store->name();
258  } else {
259  ret += indent + "May not access main store";
260  }
261  }
262  return ret;
263 }

◆ findProxy()

SG::DataProxy * SimpleView::findProxy ( const CLID id,
const std::string &  key,
const bool  allowFallThrough 
) const
virtual

Reimplemented in DebugView.

Definition at line 75 of file SimpleView.cxx.

76 {
77  auto isValid = [](const SG::DataProxy* p) { return p != nullptr and p->isValid(); };
78  auto localProxy = m_store->proxy( id, viewKey(key) );
79  if ( isValid( localProxy ) ) {
80  return localProxy;
81  }
82 
83  for ( auto parent: m_parents ) {
84  // Don't allow parents to access whole-event store independently of this view
85  auto inParentProxy = parent->impl()->findProxy( id, key, false );
86  if ( isValid( inParentProxy ) ) {
87  return inParentProxy;
88  }
89  }
90 
91  //Look in the default store if cound not find in any view - for instance for event-wise IDCs
92  if ( (not isValid( localProxy )) and allowFallThrough ) {
93 
94  //Apply filtering
95  if ( m_fallFilter.size() ) {
96  bool filterPass = false;
97 
98  //Filter passes if the key contains one of the possible values
99  for ( auto& entry : m_fallFilter ) {
100  if ( key.find( entry ) != std::string::npos ) {
101  filterPass = true;
102  break;
103  }
104  }
105 
106  if ( !filterPass ) return nullptr;
107  }
108 
109  return m_store->proxy( id, key );
110  }
111  return nullptr;
112 }

◆ getParentLinks()

virtual const std::set< const SG::View* >& SimpleView::getParentLinks ( ) const
inlinevirtual

returns the links to the previously used views

Definition at line 57 of file SimpleView.h.

58  { return m_parents; }

◆ getROI()

const ElementLink< TrigRoiDescriptorCollection > & SimpleView::getROI ( ) const

Definition at line 233 of file SimpleView.cxx.

233  {
234  return m_roi;
235 }

◆ keyToString() [1/2]

const std::string * SimpleView::keyToString ( IStringPool::sgkey_t  key) const
virtual

Definition at line 214 of file SimpleView.cxx.

215 {
216  throw std::runtime_error( "Not implemented: SimpleView::keyToString" );
217  return m_store->keyToString( key );
218 }

◆ keyToString() [2/2]

const std::string * SimpleView::keyToString ( IStringPool::sgkey_t  key,
CLID clid 
) const
virtual

Definition at line 219 of file SimpleView.cxx.

220 {
221  throw std::runtime_error( "Not implemented: SimpleView::keyToString" );
222  return m_store->keyToString( key, clid );
223 }

◆ linkParent()

void SimpleView::linkParent ( const IProxyDict parent)
virtual

links to the previously used views through these parent views additional data objects become available

Reimplemented in DebugView.

Definition at line 33 of file SimpleView.cxx.

33  {
34  auto castParent = dynamic_cast< const SG::View* >( parent );
35  if ( castParent ) {
36  m_parents.insert( castParent );
37  }
38  else {
39  throw std::runtime_error( "Unable to link parent view that cannot be cast to SG::View" );
40  }
41 }

◆ name()

const std::string & SimpleView::name ( ) const
virtual

Definition at line 204 of file SimpleView.cxx.

205 {
206  return m_name;
207 }

◆ proxies()

std::vector< const SG::DataProxy * > SimpleView::proxies ( ) const
virtual

Return the list of all current proxies in store.

Definition at line 130 of file SimpleView.cxx.

131 {
132  return m_store->proxies();
133 }

◆ proxy() [1/2]

SG::DataProxy * SimpleView::proxy ( const CLID id,
const std::string &  key 
) const
virtual

Get proxy with given id and key.

Parameters
idThe CLID of the desired object.
keyThe key of the desired object.

If the key is a null string, then it is a default key. Finding a proxy via the default key should succeed only if there is exactly one object with the given CLID in the store. Finding a proxy via a default key is considered deprecated for the case of the event store.

Returns 0 to flag failure

Reimplemented in DebugView.

Definition at line 70 of file SimpleView.cxx.

71 {
72  return findProxy( id, key, m_allowFallThrough );
73 }

◆ proxy() [2/2]

SG::DataProxy * SimpleView::proxy ( const void *const  pTransient) const
virtual

Get a proxy referencing a given transient object.

Parameters
pTransientThe object to find.

Returns 0 to flag failure

Reimplemented in DebugView.

Definition at line 121 of file SimpleView.cxx.

122 {
123  return m_store->proxy( pTransient );
124 }

◆ proxy_exact()

SG::DataProxy * SimpleView::proxy_exact ( SG::sgkey_t  sgkey) const
virtual

Get proxy given a hashed key+clid.

Parameters
sgkeyHashed key to look up.

Find an exact match; no handling of aliases, etc. Returns 0 to flag failure.

Definition at line 51 of file SimpleView.cxx.

52 {
53  return nullptr;
54 }

◆ recordObject()

SG::DataProxy * SimpleView::recordObject ( SG::DataObjectSharedPtr< DataObject >  obj,
const std::string &  key,
bool  allowMods,
bool  returnExisting 
)
virtual

Record an object in the store.

Parameters
objThe data object to store.
keyThe key as which it should be stored.
allowModsIf false, the object will be recorded as const.

Full-blown record. obj should usually be something deriving from SG::DataBucket.

Returns the proxy for the recorded object; nullptr on failure.

Reimplemented in DebugView.

Definition at line 179 of file SimpleView.cxx.

180 {
181  return m_store->recordObject( obj, viewKey(key), allowMods, returnExisting );
182 }

◆ registerKey()

void SimpleView::registerKey ( IStringPool::sgkey_t  key,
const std::string &  str,
CLID  clid 
)
virtual

Definition at line 224 of file SimpleView.cxx.

225 {
226  m_store->registerKey( key, viewKey(str), clid );
227 }

◆ setFilter()

void SimpleView::setFilter ( std::vector< std::string > const inputFilter)
inline

Set a filtering rule for anything loaded via fallthrough.

Definition at line 63 of file SimpleView.h.

64  { m_fallFilter = inputFilter; }

◆ setROI()

void SimpleView::setROI ( const ElementLink< TrigRoiDescriptorCollection > &  roi)

Definition at line 229 of file SimpleView.cxx.

229  {
230  m_roi = roi;
231 }

◆ stringToKey()

IStringPool::sgkey_t SimpleView::stringToKey ( const std::string &  str,
CLID  clid 
)
virtual

Definition at line 210 of file SimpleView.cxx.

211 {
212  return m_store->stringToKey( viewKey(str), clid );
213 }

◆ tryELRemap()

bool SimpleView::tryELRemap ( sgkey_t  sgkey_in,
size_t  index_in,
sgkey_t &  sgkey_out,
size_t &  index_out 
)
virtual

Test to see if the target of an ElementLink has moved.

Parameters
sgkey_inOriginal hashed key of the EL.
index_inOriginal index of the EL.
sgkey_out[out]New hashed key for the EL.
index_out[out]New index for the EL.
Returns
True if there is a remapping; false otherwise.

The default implementation here always returns false.

Definition at line 162 of file SimpleView.cxx.

163 {
164  throw std::runtime_error( "Not implemented: SimpleView::tryELRemap" );
165  return m_store->tryELRemap( sgkey_in, index_in, sgkey_out, index_out );
166 }

◆ unboundHandle()

void SimpleView::unboundHandle ( IResetable handle)
virtual

Tell the store that a handle has been unbound from a proxy.

Parameters
handleThe handle that was unbound. The default implementation does nothing.

Definition at line 199 of file SimpleView.cxx.

200 {
201  return m_store->unboundHandle( handle );
202 }

◆ viewKey()

std::string SimpleView::viewKey ( const std::string &  key) const

Construct a key as used in the parent store.

key The key as used in the view.

Definition at line 27 of file SimpleView.cxx.

28 {
29  return SG::transientKey (m_name + "_" + key);
30 }

Member Data Documentation

◆ m_allowFallThrough

bool SimpleView::m_allowFallThrough
protected

Definition at line 197 of file SimpleView.h.

◆ m_fallFilter

std::vector< std::string > SimpleView::m_fallFilter
protected

Definition at line 196 of file SimpleView.h.

◆ m_name

std::string SimpleView::m_name
protected

Definition at line 194 of file SimpleView.h.

◆ m_parents

std::set< const SG::View* > SimpleView::m_parents
protected

Definition at line 195 of file SimpleView.h.

◆ m_roi

ElementLink<TrigRoiDescriptorCollection> SimpleView::m_roi
protected

Definition at line 193 of file SimpleView.h.

◆ m_store

ServiceHandle< StoreGateSvc > SimpleView::m_store
protected

Definition at line 190 of file SimpleView.h.


The documentation for this class was generated from the following files:
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:840
SimpleView::m_fallFilter
std::vector< std::string > m_fallFilter
Definition: SimpleView.h:196
SimpleView::m_allowFallThrough
bool m_allowFallThrough
Definition: SimpleView.h:197
SimpleView::m_name
std::string m_name
Definition: SimpleView.h:194
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:620
SimpleView::m_parents
std::set< const SG::View * > m_parents
Definition: SimpleView.h:195
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
geometry_dat_to_json.indent
indent
Definition: geometry_dat_to_json.py:36
SimpleView::proxies
virtual std::vector< const SG::DataProxy * > proxies() const
Return the list of all current proxies in store.
Definition: SimpleView.cxx:130
SimpleView::proxy
virtual SG::DataProxy * proxy(const CLID &id, const std::string &key) const
Get proxy with given id and key.
Definition: SimpleView.cxx:70
test_pyathena.parent
parent
Definition: test_pyathena.py:15
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
SimpleView::viewKey
std::string viewKey(const std::string &key) const
Construct a key as used in the parent store.
Definition: SimpleView.cxx:27
SimpleView::name
virtual const std::string & name() const
Definition: SimpleView.cxx:204
Name
JetDumper::Name Name
Definition: JetDumper.cxx:19
SG::transientKey
std::string transientKey(const std::string &key)
Make a key transient.
Definition: transientKey.h:51
str
Definition: BTagTrackIpAccessor.cxx:11
SimpleView::m_roi
ElementLink< TrigRoiDescriptorCollection > m_roi
Definition: SimpleView.h:193
SG::View
Definition: View.h:25
python.PyAthena.obj
obj
Definition: PyAthena.py:132
SG::DataProxy
Definition: DataProxy.h:45
SimpleView::m_store
ServiceHandle< StoreGateSvc > m_store
Definition: SimpleView.h:190
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
SimpleView::findProxy
virtual SG::DataProxy * findProxy(const CLID &id, const std::string &key, const bool allowFallThrough) const
Definition: SimpleView.cxx:75