ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimBinArray< T > Class Template Reference

#include <FPGATrackSimBinArray.h>

Collaboration diagram for FPGATrackSimBinArray< T >:

Classes

struct  ConstIterator
struct  Iterator

Public Member Functions

 FPGATrackSimBinArray ()=default
 FPGATrackSimBinArray (const std::vector< unsigned int > &dims, const T &initval)
void setsize (const std::vector< unsigned int > &dims, const T &initval)
unsigned int size () const
const std::vector< T > & flatdata () const
const std::vector< unsigned int > & dims () const
bool isValid (const std::vector< unsigned int > &idx) const
const T & operator[] (const std::vector< unsigned int > &idx) const
const T & operator[] (const std::vector< int > &idx) const
T & operator[] (const std::vector< int > &idx)
T & operator[] (const std::vector< unsigned > &idx)
Iterator begin ()
Iterator end ()
auto begin () const
auto end () const

Private Attributes

unsigned int m_entries {}
std::vector< unsigned int > m_dims {}
std::vector< unsigned int > m_step {}
std::vector< T > m_data {}

Detailed Description

template<typename T>
class FPGATrackSimBinArray< T >

Definition at line 40 of file FPGATrackSimBinArray.h.

Constructor & Destructor Documentation

◆ FPGATrackSimBinArray() [1/2]

template<typename T>
FPGATrackSimBinArray< T >::FPGATrackSimBinArray ( )
default

◆ FPGATrackSimBinArray() [2/2]

template<typename T>
FPGATrackSimBinArray< T >::FPGATrackSimBinArray ( const std::vector< unsigned int > & dims,
const T & initval )
inline

Definition at line 45 of file FPGATrackSimBinArray.h.

46 {
48 }
void setsize(const std::vector< unsigned int > &dims, const T &initval)
const std::vector< unsigned int > & dims() const

Member Function Documentation

◆ begin() [1/2]

template<typename T>
Iterator FPGATrackSimBinArray< T >::begin ( )
inline

Definition at line 243 of file FPGATrackSimBinArray.h.

◆ begin() [2/2]

template<typename T>
auto FPGATrackSimBinArray< T >::begin ( ) const
inline

◆ dims()

template<typename T>
const std::vector< unsigned int > & FPGATrackSimBinArray< T >::dims ( ) const
inline

Definition at line 78 of file FPGATrackSimBinArray.h.

78{ return m_dims; }

◆ end() [1/2]

template<typename T>
Iterator FPGATrackSimBinArray< T >::end ( )
inline

Definition at line 244 of file FPGATrackSimBinArray.h.

245 {
247 for (auto &d : m_dims)
248 retv.push_back(d - 1);
249 return ++Iterator(retv, *this);
250 }

◆ end() [2/2]

template<typename T>
auto FPGATrackSimBinArray< T >::end ( ) const
inline

Definition at line 253 of file FPGATrackSimBinArray.h.

254 {
256 for (auto &d : m_dims)
257 retv.push_back(d - 1);
258 return ++ConstIterator(retv, *this);
259 }

◆ flatdata()

template<typename T>
const std::vector< T > & FPGATrackSimBinArray< T >::flatdata ( ) const
inline

Definition at line 75 of file FPGATrackSimBinArray.h.

75{return m_data;}

◆ isValid()

template<typename T>
bool FPGATrackSimBinArray< T >::isValid ( const std::vector< unsigned int > & idx) const
inline

Definition at line 81 of file FPGATrackSimBinArray.h.

81 {
82 if (idx.size() != m_dims.size()) return false;
83 for (unsigned int i = 0; i < m_dims.size(); i++)
84 {
85 if (idx[i]>=m_dims[i]) return false;
86 }
87 return true;
88 }
unsigned int size() const

◆ operator[]() [1/4]

template<typename T>
T & FPGATrackSimBinArray< T >::operator[] ( const std::vector< int > & idx)
inline

Definition at line 126 of file FPGATrackSimBinArray.h.

126 {
127 T& retv ATLAS_THREAD_SAFE = const_cast<T&>(std::as_const(*this)[idx]);
128 return retv;
129 }

◆ operator[]() [2/4]

template<typename T>
const T & FPGATrackSimBinArray< T >::operator[] ( const std::vector< int > & idx) const
inline

Definition at line 115 of file FPGATrackSimBinArray.h.

116 {
118 for (auto &d : idx)
119 idx_unsigned.push_back(d);
120 return (*this)[idx_unsigned];
121 }

◆ operator[]() [3/4]

template<typename T>
T & FPGATrackSimBinArray< T >::operator[] ( const std::vector< unsigned > & idx)
inline

Definition at line 130 of file FPGATrackSimBinArray.h.

130 {
131 T &retv ATLAS_THREAD_SAFE = const_cast<T &>(std::as_const(*this)[idx]);
132 return retv;
133 }

◆ operator[]() [4/4]

template<typename T>
const T & FPGATrackSimBinArray< T >::operator[] ( const std::vector< unsigned int > & idx) const
inline

Definition at line 91 of file FPGATrackSimBinArray.h.

92 {
93 if(idx.size() != m_step.size()) {
94 throw std::runtime_error("FPGATrackSimBinArray: index size does not match array dimensions");
95 }
96
97 // Translate N-dim index to 1-d index
98 unsigned int offset = 0;
99 for (unsigned int i = 0; i < m_step.size(); i++)
100 {
101 if (idx.at(i) >= m_dims.at(i))
102 {
103 throw std::runtime_error("FPGATrackSimBinArray: index out of range i=" + std::to_string(i) +
104 " idx[i]=" + std::to_string(idx.at(i)) +
105 " dims[i]=" + std::to_string(m_dims.at(i)) + "\n");
106 }
107 offset += idx.at(i) * m_step.at(i);
108 }
109
110 // Return data from 1-d vector
111 return m_data.at(offset);
112 }
std::vector< unsigned int > m_step

◆ setsize()

template<typename T>
void FPGATrackSimBinArray< T >::setsize ( const std::vector< unsigned int > & dims,
const T & initval )
inline

Definition at line 51 of file FPGATrackSimBinArray.h.

52 {
53 m_dims = dims;
54
55 // Caclulate the number of entries and a "step"-size needed for translating
56 // N-dim indices into a 1-d index
57 m_entries = 1;
58 for (auto &dim : dims)
59 {
60 m_step.push_back(m_entries);
61 m_entries *= dim;
62 }
63
64 // Allocate 1-d array
65 m_data.resize(m_entries, initval);
66 }

◆ size()

template<typename T>
unsigned int FPGATrackSimBinArray< T >::size ( ) const
inline

Definition at line 69 of file FPGATrackSimBinArray.h.

69{ return m_entries; }

Member Data Documentation

◆ m_data

template<typename T>
std::vector<T> FPGATrackSimBinArray< T >::m_data {}
private

Definition at line 266 of file FPGATrackSimBinArray.h.

266{};

◆ m_dims

template<typename T>
std::vector<unsigned int> FPGATrackSimBinArray< T >::m_dims {}
private

Definition at line 264 of file FPGATrackSimBinArray.h.

264{};

◆ m_entries

template<typename T>
unsigned int FPGATrackSimBinArray< T >::m_entries {}
private

Definition at line 263 of file FPGATrackSimBinArray.h.

263{};

◆ m_step

template<typename T>
std::vector<unsigned int> FPGATrackSimBinArray< T >::m_step {}
private

Definition at line 265 of file FPGATrackSimBinArray.h.

265{};

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