ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
sTgcDigitContainer Class Referenceabstract

Use IdentifiableContainer with sTgcDigitCollection. More...

#include <sTgcDigitContainer.h>

Inheritance diagram for sTgcDigitContainer:
Collaboration diagram for sTgcDigitContainer:

Public Types

typedef sTgcDigitCollection::size_type size_type
 
typedef IdentifiableContainer< sTgcDigitCollectionMyBase
 
typedef T IDENTIFIABLE
 
typedef EventContainers::IdentifiableCache< T > ICACHE
 
typedef IdentifiableContainerMT< T > MyType
 
typedef T *& reference
 
typedef T *constconst_reference
 
typedef T * value_type
 
typedef T ** pointer
 
typedef T *constconst_pointer
 
typedef T base_value_type
 
typedef std::vector< IdentifierHashHash_Container
 

Public Member Functions

 sTgcDigitContainer ()
 
 sTgcDigitContainer (unsigned int hash_max)
 
 ~sTgcDigitContainer ()
 
size_type digit_size () const
 
virtual const CLIDclID () const
 return class ID More...
 
virtual bool hasExternalCache () const override final
 
virtual const T * indexFindPtr (IdentifierHash hashId) const override final
 return pointer on the found entry or null if out of range using hashed index - fast version, does not call cnv if object not there More...
 
const_iterator indexFind (IdentifierHash hashId) const
 
virtual StatusCode addCollection (const T *coll, IdentifierHash hashId) override final
 insert collection into container with id hash if IDC should not take ownership of collection, set ownsColl to false More...
 
virtual StatusCode addOrDelete (std::unique_ptr< T >, IdentifierHash hashId) override final
 Tries to add the item to the cache, if the item already exists then it is deleted This is a convenience method for online multithreaded scenarios. More...
 
virtual StatusCode addOrDelete (std::unique_ptr< const T >, IdentifierHash hashId) override final
 
StatusCode addOrDelete (std::unique_ptr< T >, IdentifierHash hashId, bool &deleted)
 identical to previous excepts allows counting of deletions More...
 
StatusCode addLock (std::unique_ptr< T > ptr, IdentifierHash hashId)
 Like the other add methods but optimized for changing from the inprogress state. More...
 
virtual bool tryAddFromCache (IdentifierHash hashId) override final
 Looks in the cache to see if item already exists if not it returns false, If it does exist it incorporates it into the IDC view but changing the mask. More...
 
StatusCode fetchOrCreate (IdentifierHash hashId)
 Tries will look for item in cache, if it doesn't exist will call the cache IMAKER If cache doesn't have an IMAKER then this fails. More...
 
StatusCode fetchOrCreate (const std::vector< IdentifierHash > &hashId)
 
virtual StatusCode naughtyRetrieve ATLAS_NOT_THREAD_SAFE (IdentifierHash hashId, T *&collToRetrieve) const override final
 
T * removeCollection (IdentifierHash hashId)
 remove collection from container for id hash, returning it (and ownership) to client More...
 
virtual void cleanup () override final
 reset m_hashids and call IdentifiableCache's cleanup More...
 
virtual size_t fullSize () const override final
 return full size of container More...
 
size_t size () const
 Duplicate of fullSize for backwards compatability. More...
 
void prepareItr () const
 
virtual size_t numberOfCollections () const override final
 return number of collections More...
 
const std::vector< EventContainers::hashPair< T > > & GetAllHashPtrPair () const
 
virtual std::vector< IdentifierHashGetAllCurrentHashes () const override final
 Returns a collection of all hashes availiable in this IDC. More...
 
const_iterator begin () const
 return const_iterator for first entry More...
 
const_iterator end () const
 return const_iterator for end of container More...
 
bool empty () const
 return true if container is empty More...
 
IDC_WriteHandle getWriteHandle (IdentifierHash hash)
 
virtual StatusCode naughtyRetrieve (IdentifierHash hashId, T *&collToRetrieve) const =0
 

Static Public Member Functions

static const CLIDclassID ()
 

Protected Types

typedef EventContainers::IdentifiableCacheBase IdentifiableCacheBase
 

Protected Member Functions

bool tryAddFromCache (IdentifierHash hashId, EventContainers::IDC_WriteHandleBase &lock)
 
void cleanup (deleter_f *deleter)
 
bool insert (IdentifierHash hashId, const void *ptr)
 
void Wait () const
 
void ResetMask ()
 

Protected Attributes

bool m_OnlineMode
 
std::unique_ptr< I_InternalIDC > m_link
 

Detailed Description

Use IdentifiableContainer with sTgcDigitCollection.

Definition at line 48 of file sTgcDigitContainer.h.

Member Typedef Documentation

◆ base_value_type

template<class T >
typedef T IdentifiableContainerMT< T >::base_value_type
inherited

Definition at line 75 of file IdentifiableContainerMT.h.

◆ const_pointer

template<class T >
typedef T* const* IdentifiableContainerMT< T >::const_pointer
inherited

Definition at line 74 of file IdentifiableContainerMT.h.

◆ const_reference

template<class T >
typedef T* const& IdentifiableContainerMT< T >::const_reference
inherited

Definition at line 71 of file IdentifiableContainerMT.h.

◆ Hash_Container

Definition at line 18 of file IdentifiableContainerBase.h.

◆ ICACHE

template<class T >
typedef EventContainers::IdentifiableCache<T> IdentifiableContainerMT< T >::ICACHE
inherited

Definition at line 67 of file IdentifiableContainerMT.h.

◆ IDENTIFIABLE

template<class T >
typedef T IdentifiableContainerMT< T >::IDENTIFIABLE
inherited

Definition at line 66 of file IdentifiableContainerMT.h.

◆ IdentifiableCacheBase

Definition at line 25 of file IdentifiableContainerBase.h.

◆ MyBase

Definition at line 58 of file sTgcDigitContainer.h.

◆ MyType

template<class T >
typedef IdentifiableContainerMT<T> IdentifiableContainerMT< T >::MyType
inherited

Definition at line 68 of file IdentifiableContainerMT.h.

◆ pointer

template<class T >
typedef T** IdentifiableContainerMT< T >::pointer
inherited

Definition at line 73 of file IdentifiableContainerMT.h.

◆ reference

template<class T >
typedef T*& IdentifiableContainerMT< T >::reference
inherited

Definition at line 70 of file IdentifiableContainerMT.h.

◆ size_type

Definition at line 57 of file sTgcDigitContainer.h.

◆ value_type

template<class T >
typedef T* IdentifiableContainerMT< T >::value_type
inherited

Definition at line 72 of file IdentifiableContainerMT.h.

Constructor & Destructor Documentation

◆ sTgcDigitContainer() [1/2]

sTgcDigitContainer::sTgcDigitContainer ( )

Definition at line 23 of file sTgcDigitContainer.cxx.

24  : IdentifiableContainer<sTgcDigitCollection>(1578) //Hard coded max size for dictionary generators
25 {
26 
27 }

◆ sTgcDigitContainer() [2/2]

sTgcDigitContainer::sTgcDigitContainer ( unsigned int  hash_max)

Definition at line 30 of file sTgcDigitContainer.cxx.

32 {
33 
34 }

◆ ~sTgcDigitContainer()

sTgcDigitContainer::~sTgcDigitContainer ( )
default

Member Function Documentation

◆ addCollection()

template<class T >
StatusCode IdentifiableContainerMT< T >::addCollection ( const T *  coll,
IdentifierHash  hashId 
)
finaloverridevirtualinherited

insert collection into container with id hash if IDC should not take ownership of collection, set ownsColl to false

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 297 of file IdentifiableContainerMT.h.

298 {
299  // update m_hashids
300  if (ATH_UNLIKELY(! IdentifiableContainerBase::insert(hashId, coll))) return StatusCode::FAILURE;
301  return StatusCode::SUCCESS;
302 
303 }

◆ addLock()

template<class T >
StatusCode IdentifiableContainerMT< T >::addLock ( std::unique_ptr< T >  ptr,
IdentifierHash  hashId 
)
inherited

Like the other add methods but optimized for changing from the inprogress state.

Definition at line 372 of file IdentifiableContainerMT.h.

373 {
374  return m_link->addLock(hashId, ptr.release());
375 }

◆ addOrDelete() [1/3]

template<class T >
virtual StatusCode IdentifiableContainerMT< T >::addOrDelete ( std::unique_ptr< const T >  ,
IdentifierHash  hashId 
)
finaloverridevirtualinherited

◆ addOrDelete() [2/3]

template<class T >
StatusCode IdentifiableContainerMT< T >::addOrDelete ( std::unique_ptr< T >  uptr,
IdentifierHash  hashId 
)
finaloverridevirtualinherited

Tries to add the item to the cache, if the item already exists then it is deleted This is a convenience method for online multithreaded scenarios.

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 350 of file IdentifiableContainerMT.h.

351 {
352  if(ATH_UNLIKELY(hashId >= m_link->fullSize())) return StatusCode::FAILURE;
353  auto ptr = uptr.release();
354  bool b = IdentifiableContainerBase::insert(hashId, ptr);
355  if(!b) delete ptr;
356  return StatusCode::SUCCESS;
357 }

◆ addOrDelete() [3/3]

template<class T >
StatusCode IdentifiableContainerMT< T >::addOrDelete ( std::unique_ptr< T >  uptr,
IdentifierHash  hashId,
bool &  deleted 
)
inherited

identical to previous excepts allows counting of deletions

Definition at line 379 of file IdentifiableContainerMT.h.

380 {
381  if(ATH_UNLIKELY(hashId >= m_link->fullSize())) return StatusCode::FAILURE;
382  auto ptr = uptr.release();
383  bool b = IdentifiableContainerBase::insert(hashId, ptr);
384  if(!b) delete ptr;
385  deleted = !b;
386  return StatusCode::SUCCESS;
387 }

◆ ATLAS_NOT_THREAD_SAFE()

template<class T >
virtual StatusCode naughtyRetrieve IdentifiableContainerMT< T >::ATLAS_NOT_THREAD_SAFE ( IdentifierHash  hashId,
T *&  collToRetrieve 
) const
finaloverridevirtualinherited

◆ begin()

template<class T >
const_iterator IdentifiableContainerMT< T >::begin ( ) const
inlineinherited

return const_iterator for first entry

Definition at line 233 of file IdentifiableContainerMT.h.

233  {
234  return const_iterator(m_link->cbegin());
235  }

◆ classID()

const CLID & sTgcDigitContainer::classID ( )
static

Definition at line 46 of file sTgcDigitContainer.cxx.

47 {
49 }

◆ cleanup() [1/2]

template<class T >
void IdentifiableContainerMT< T >::cleanup
finaloverridevirtualinherited

reset m_hashids and call IdentifiableCache's cleanup

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 309 of file IdentifiableContainerMT.h.

310 {
311  IdentifiableContainerBase::cleanup(void_unique_ptr::Deleter<T>::deleter);
312 }

◆ cleanup() [2/2]

void IdentifiableContainerBase::cleanup ( deleter_f deleter)
protectedinherited

Definition at line 38 of file IdentifiableContainerBase.cxx.

38  {
39  if(m_OnlineMode) throw std::runtime_error("Not implemented in online mode");
40  m_link->cleanUp(deleter);
41  }

◆ clID()

virtual const CLID& sTgcDigitContainer::clID ( ) const
inlinevirtual

return class ID

Definition at line 67 of file sTgcDigitContainer.h.

68  {
69  return classID();
70  }

◆ digit_size()

sTgcDigitContainer::size_type sTgcDigitContainer::digit_size ( ) const

Definition at line 55 of file sTgcDigitContainer.cxx.

55  {
59 
60  for (; it != iend; ++it ) {
61  count += (*it)->size();
62  }
63  return count;
64 }

◆ empty()

template<class T >
bool IdentifiableContainerMT< T >::empty ( ) const
inlineinherited

return true if container is empty

Definition at line 244 of file IdentifiableContainerMT.h.

244  {
245  return numberOfCollections()==0;
246  }

◆ end()

template<class T >
const_iterator IdentifiableContainerMT< T >::end ( ) const
inlineinherited

return const_iterator for end of container

Definition at line 239 of file IdentifiableContainerMT.h.

239  {
240  return const_iterator(m_link->cend());
241  }

◆ fetchOrCreate() [1/2]

template<class T >
StatusCode IdentifiableContainerMT< T >::fetchOrCreate ( const std::vector< IdentifierHash > &  hashId)
inherited

Definition at line 323 of file IdentifiableContainerMT.h.

324 {
325  return IdentifiableContainerBase::fetchOrCreate(hashIds);
326 }

◆ fetchOrCreate() [2/2]

template<class T >
StatusCode IdentifiableContainerMT< T >::fetchOrCreate ( IdentifierHash  hashId)
inherited

Tries will look for item in cache, if it doesn't exist will call the cache IMAKER If cache doesn't have an IMAKER then this fails.

Definition at line 316 of file IdentifiableContainerMT.h.

317 {
318  return IdentifiableContainerBase::fetchOrCreate(hashId);
319 }

◆ fullSize()

template<class T >
virtual size_t IdentifiableContainerMT< T >::fullSize ( ) const
inlinefinaloverridevirtualinherited

return full size of container

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 201 of file IdentifiableContainerMT.h.

201  {
202  return m_link->fullSize();
203  }

◆ GetAllCurrentHashes()

template<class T >
virtual std::vector<IdentifierHash> IdentifiableContainerMT< T >::GetAllCurrentHashes ( ) const
inlinefinaloverridevirtualinherited

Returns a collection of all hashes availiable in this IDC.

If this is an "offline" mode IDC then this is identical to the cache If this is an "online" mode IDC then this is the items that both exist in the cache and have a postive mask element

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 228 of file IdentifiableContainerMT.h.

228  {
229  return IdentifiableContainerBase::GetAllCurrentHashes();
230  }

◆ GetAllHashPtrPair()

template<class T >
const std::vector< EventContainers::hashPair<T> >& IdentifiableContainerMT< T >::GetAllHashPtrPair ( ) const
inlineinherited

Definition at line 217 of file IdentifiableContainerMT.h.

217  {
218  static_assert(sizeof(const T*) == sizeof(const void*) && std::is_pointer<const T*>::value);
219  static_assert(sizeof(EventContainers::hashPair<T>) == sizeof(EventContainers::hashPair<void>));
220  return reinterpret_cast<const std::vector < EventContainers::hashPair<T> >&>
221  (m_link->getAllHashPtrPair());
222  }

◆ getWriteHandle()

template<class T >
IDC_WriteHandle IdentifiableContainerMT< T >::getWriteHandle ( IdentifierHash  hash)
inlineinherited

Definition at line 248 of file IdentifiableContainerMT.h.

249  {
250  IDC_WriteHandle lock;
251  lock.m_hashId = hash;
252  lock.m_IDC_ptr = this;
253  return lock;
254  }

◆ hasExternalCache()

template<class T >
virtual bool IdentifiableContainerMT< T >::hasExternalCache ( ) const
inlinefinaloverridevirtualinherited

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 152 of file IdentifiableContainerMT.h.

152 { return m_OnlineMode; }

◆ indexFind()

template<class T >
const_iterator IdentifiableContainerMT< T >::indexFind ( IdentifierHash  hashId) const
inlineinherited

Definition at line 160 of file IdentifiableContainerMT.h.

160  {
161  return m_link->indexFind(hashId);
162  }

◆ indexFindPtr()

template<class T >
const T * IdentifiableContainerMT< T >::indexFindPtr ( IdentifierHash  hashId) const
finaloverridevirtualinherited

return pointer on the found entry or null if out of range using hashed index - fast version, does not call cnv if object not there

return valuetype on the found entry or null if out of range using hashed index - fast version, does not call cnv if object not there

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 289 of file IdentifiableContainerMT.h.

290 {
291  return reinterpret_cast<const T* > (IdentifiableContainerBase::indexFindPtr(hashId));
292 }

◆ insert()

bool EventContainers::IdentifiableContainerBase::insert ( IdentifierHash  hashId,
const void *  ptr 
)
inlineprotectedinherited

Definition at line 28 of file IdentifiableContainerBase.h.

28 { return m_link->insert(hashId, ptr); }

◆ naughtyRetrieve()

template<class T >
virtual StatusCode EventContainers::IIdentifiableCont< T >::naughtyRetrieve ( IdentifierHash  hashId,
T *&  collToRetrieve 
) const
pure virtualinherited

◆ numberOfCollections()

template<class T >
virtual size_t IdentifiableContainerMT< T >::numberOfCollections ( ) const
inlinefinaloverridevirtualinherited

return number of collections

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 213 of file IdentifiableContainerMT.h.

213  {
214  return IdentifiableContainerBase::numberOfCollections();
215  }

◆ prepareItr()

template<class T >
void IdentifiableContainerMT< T >::prepareItr ( ) const
inlineinherited

Definition at line 210 of file IdentifiableContainerMT.h.

210 { m_link->wait(); }

◆ removeCollection()

template<class T >
T * IdentifiableContainerMT< T >::removeCollection ( IdentifierHash  hashId)
inherited

remove collection from container for id hash, returning it (and ownership) to client

Definition at line 259 of file IdentifiableContainerMT.h.

260 {
261  return reinterpret_cast<T*>(m_link->removeCollection(hashId));
262 }

◆ ResetMask()

void EventContainers::IdentifiableContainerBase::ResetMask ( )
protectedinherited

◆ size()

template<class T >
size_t IdentifiableContainerMT< T >::size ( ) const
inlineinherited

Duplicate of fullSize for backwards compatability.

Definition at line 206 of file IdentifiableContainerMT.h.

206  {
207  return m_link->fullSize();
208  }

◆ tryAddFromCache() [1/2]

template<class T >
bool IdentifiableContainerMT< T >::tryAddFromCache ( IdentifierHash  hashId)
finaloverridevirtualinherited

Looks in the cache to see if item already exists if not it returns false, If it does exist it incorporates it into the IDC view but changing the mask.

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 331 of file IdentifiableContainerMT.h.

332 {
333  return IdentifiableContainerBase::tryAddFromCache(hashId);
334 }

◆ tryAddFromCache() [2/2]

bool EventContainers::IdentifiableContainerBase::tryAddFromCache ( IdentifierHash  hashId,
EventContainers::IDC_WriteHandleBase lock 
)
inlineprotectedinherited

Definition at line 30 of file IdentifiableContainerBase.h.

30  {
31  return m_link->tryAddFromCache(hashId, lock); }

◆ Wait()

void EventContainers::IdentifiableContainerBase::Wait ( ) const
inlineprotectedinherited

Definition at line 29 of file IdentifiableContainerBase.h.

29 { m_link->wait(); }

Member Data Documentation

◆ m_link

std::unique_ptr<I_InternalIDC> EventContainers::IdentifiableContainerBase::m_link
protectedinherited

Definition at line 26 of file IdentifiableContainerBase.h.

◆ m_OnlineMode

bool EventContainers::IdentifiableContainerBase::m_OnlineMode
protectedinherited

Definition at line 24 of file IdentifiableContainerBase.h.


The documentation for this class was generated from the following files:
sTgcDigitContainer::classID
static const CLID & classID()
Definition: sTgcDigitContainer.cxx:46
IdentifiableContainerMT::IDC_WriteHandle
friend class IDC_WriteHandle
Definition: IdentifiableContainerMT.h:140
skel.it
it
Definition: skel.GENtoEVGEN.py:396
athena.value
value
Definition: athena.py:124
ATH_UNLIKELY
#define ATH_UNLIKELY(x)
Definition: AthUnlikelyMacros.h:17
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
EventContainers::hashPair
Definition: I_InternalIDC.h:25
void_unique_ptr::Deleter
Definition: deleter.h:22
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
ClassID_traits::ID
static const CLID & ID()
the CLID of T
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:50
EventContainers::IdentifiableContainerBase::m_link
std::unique_ptr< I_InternalIDC > m_link
Definition: IdentifiableContainerBase.h:26
IdentifiableContainerMT::numberOfCollections
virtual size_t numberOfCollections() const override final
return number of collections
Definition: IdentifiableContainerMT.h:213
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition: IdentifiableContainerMT.h:239
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:79
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition: IdentifiableContainerMT.h:233
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
EventContainers::IdentifiableContainerBase::m_OnlineMode
bool m_OnlineMode
Definition: IdentifiableContainerBase.h:24
IdentifiableContainerMT
Definition: IdentifiableContainerMT.h:30
sTgcDigitContainer::size_type
sTgcDigitCollection::size_type size_type
Definition: sTgcDigitContainer.h:57
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35