Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | List of all members
G4TAtomicHitsCollection< T > Class Template Reference

This is an implementation of G4THitsCollection<T> where the underlying type is G4atomic<T>, not just T. More...

#include <Doxymodules_parallel.h>

Inheritance diagram for G4TAtomicHitsCollection< T >:
G4VHitsCollection

Public Types

typedef T base_type
 
typedef G4atomic< T > value_type
 
typedef std::deque< value_type * > container_type
 

Public Member Functions

 G4TAtomicHitsCollection ()
 
 G4TAtomicHitsCollection (G4String detName, G4String colNam)
 
virtual ~G4TAtomicHitsCollection ()
 
G4bool operator== (const G4TAtomicHitsCollection< T > &right) const
 
virtual void DrawAllHits ()
 
virtual void PrintAllHits ()
 
value_typeoperator[] (size_t i) const
 
container_typeGetVector () const
 
G4int insert (T *aHit)
 
G4int entries () const
 
virtual G4VHitGetHit (size_t i) const
 
virtual size_t GetSize () const
 

Protected Attributes

container_typetheCollection
 
G4Mutex fMutex
 

Detailed Description

template<class T>
class G4TAtomicHitsCollection< T >

This is an implementation of G4THitsCollection<T> where the underlying type is G4atomic<T>, not just T.

A static assert is provided to ensure that T is fundamental. This class should be used in lieu of G4THitsCollection<T> when memory is a concern. Atomics are thread-safe and generally faster that mutexes (as long as the STL implementation is lock-free) but the synchronization does not come without a cost. If performance is the primary concern, use G4THitsCollection<T> in thread-local instances.

Definition at line 141 of file Doxymodules_parallel.h.

Member Typedef Documentation

◆ base_type

template<class T >
typedef T G4TAtomicHitsCollection< T >::base_type

Definition at line 88 of file G4TAtomicHitsCollection.hh.

◆ value_type

template<class T >
typedef G4atomic<T> G4TAtomicHitsCollection< T >::value_type

Definition at line 89 of file G4TAtomicHitsCollection.hh.

◆ container_type

template<class T >
typedef std::deque<value_type*> G4TAtomicHitsCollection< T >::container_type

Definition at line 90 of file G4TAtomicHitsCollection.hh.

Constructor & Destructor Documentation

◆ G4TAtomicHitsCollection() [1/2]

Definition at line 148 of file G4TAtomicHitsCollection.hh.

150{}
std::deque< value_type * > container_type

◆ G4TAtomicHitsCollection() [2/2]

template<class T >
G4TAtomicHitsCollection< T >::G4TAtomicHitsCollection ( G4String  detName,
G4String  colNam 
)

Definition at line 153 of file G4TAtomicHitsCollection.hh.

155 : G4VHitsCollection(detName, colNam)
157{}

◆ ~G4TAtomicHitsCollection()

template<class T >
G4TAtomicHitsCollection< T >::~G4TAtomicHitsCollection ( )
virtual

Definition at line 160 of file G4TAtomicHitsCollection.hh.

161{
162 for(size_t i = 0; i < theCollection->size(); i++)
163 delete(*theCollection)[i];
164 theCollection->clear();
165 delete theCollection;
166}

Member Function Documentation

◆ operator==()

template<class T >
G4bool G4TAtomicHitsCollection< T >::operator== ( const G4TAtomicHitsCollection< T > &  right) const

Definition at line 169 of file G4TAtomicHitsCollection.hh.

171{
172 return (collectionName == right.collectionName);
173}

◆ DrawAllHits()

template<class T >
void G4TAtomicHitsCollection< T >::DrawAllHits ( )
virtual

Definition at line 176 of file G4TAtomicHitsCollection.hh.

177{
178 G4AutoLock l(&fMutex);
179 for(size_t i = 0; i < theCollection->size(); i++)
180 (*theCollection)[i]->Draw();
181}

◆ PrintAllHits()

template<class T >
void G4TAtomicHitsCollection< T >::PrintAllHits ( )
virtual

Definition at line 184 of file G4TAtomicHitsCollection.hh.

185{
186 G4AutoLock l(&fMutex);
187 for(size_t i = 0; i < theCollection->size(); i++)
188 (*theCollection)[i]->Print();
189}

◆ operator[]()

template<class T >
value_type * G4TAtomicHitsCollection< T >::operator[] ( size_t  i) const
inline

Definition at line 114 of file G4TAtomicHitsCollection.hh.

114{ return (*theCollection)[i]; }

◆ GetVector()

template<class T >
container_type * G4TAtomicHitsCollection< T >::GetVector ( ) const
inline

Definition at line 116 of file G4TAtomicHitsCollection.hh.

116{ return theCollection; }

◆ insert()

template<class T >
G4int G4TAtomicHitsCollection< T >::insert ( T *  aHit)
inline

Definition at line 118 of file G4TAtomicHitsCollection.hh.

119 {
120 G4AutoLock l(&fMutex);
121 theCollection->push_back(aHit);
122 return theCollection->size();
123 }

◆ entries()

template<class T >
G4int G4TAtomicHitsCollection< T >::entries ( ) const
inline

Definition at line 126 of file G4TAtomicHitsCollection.hh.

127 {
128 G4AutoLock l(&fMutex);
129 return theCollection->size();
130 }

◆ GetHit()

template<class T >
virtual G4VHit * G4TAtomicHitsCollection< T >::GetHit ( size_t  i) const
inlinevirtual

Definition at line 134 of file G4TAtomicHitsCollection.hh.

134{ return (*theCollection)[i]; }

◆ GetSize()

template<class T >
virtual size_t G4TAtomicHitsCollection< T >::GetSize ( ) const
inlinevirtual

Definition at line 135 of file G4TAtomicHitsCollection.hh.

136 {
137 G4AutoLock l(&fMutex);
138 return theCollection->size();
139 }

Member Data Documentation

◆ theCollection

template<class T >
container_type* G4TAtomicHitsCollection< T >::theCollection
protected

Definition at line 142 of file G4TAtomicHitsCollection.hh.

◆ fMutex

template<class T >
G4Mutex G4TAtomicHitsCollection< T >::fMutex
protected

Definition at line 143 of file G4TAtomicHitsCollection.hh.


The documentation for this class was generated from the following files:

Applications | User Support | Publications | Collaboration