18#ifndef ALICEO2_TPC_VECTOR3D_H_
19#define ALICEO2_TPC_VECTOR3D_H_
29template <
typename DataT =
double>
37 Vector3D(
const unsigned int nr,
const unsigned int nz,
const unsigned int nphi) : mNr{nr}, mNz{nz}, mNphi{nphi}, mStorage{nr * nz * nphi} {};
43 DataT&
operator()(
const unsigned int iR,
const unsigned int iZ,
const unsigned int iPhi)
45 return mStorage[
getIndex(iR, iZ, iPhi)];
49 const DataT&
operator()(
const unsigned int iR,
const unsigned int iZ,
const unsigned int iPhi)
const
51 return mStorage[
getIndex(iR, iZ, iPhi)];
57 return mStorage[
index];
62 return mStorage[
index];
69 int getIndex(
const unsigned int iR,
const unsigned int iZ,
const unsigned int iPhi)
const
71 return iR + mNr * (iZ + mNz * iPhi);
78 void resize(
const unsigned int nr,
const unsigned int nz,
const unsigned int nphi)
83 mStorage.resize(nr * nz * nphi);
86 const auto&
data()
const {
return mStorage; }
87 auto&
data() {
return mStorage; }
89 unsigned int getNr()
const {
return mNr; }
90 unsigned int getNz()
const {
return mNz; }
91 unsigned int getNphi()
const {
return mNphi; }
92 unsigned int size()
const {
return mStorage.size; }
94 auto begin()
const {
return mStorage.begin(); }
95 auto begin() {
return mStorage.begin(); }
97 auto end()
const {
return mStorage.end(); }
98 auto end() {
return mStorage.end(); }
103 unsigned int mNphi{};
104 std::vector<DataT> mStorage{};
this is a simple vector class which is used in the poisson solver class
const auto & data() const
const DataT & operator[](const unsigned int index) const
unsigned int getNphi() const
get number of data points in phi direction
unsigned int getNr() const
get number of data points in r direction
Vector3D(const unsigned int nr, const unsigned int nz, const unsigned int nphi)
void resize(const unsigned int nr, const unsigned int nz, const unsigned int nphi)
unsigned int size() const
get number of data points
DataT & operator[](const unsigned int index)
operator to directly access the values
const DataT & operator()(const unsigned int iR, const unsigned int iZ, const unsigned int iPhi) const
operator to read the values
Vector3D()=default
default constructor
DataT & operator()(const unsigned int iR, const unsigned int iZ, const unsigned int iPhi)
operator to set the values
int getIndex(const unsigned int iR, const unsigned int iZ, const unsigned int iPhi) const
unsigned int getNz() const
get number of data points in z direction
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...