18#ifndef ALICEO2_TPC_DATACONTAINER3D_H_
19#define ALICEO2_TPC_DATACONTAINER3D_H_
39template <
typename DataT =
double>
46 DataContainer3D(
unsigned short nZ,
unsigned short nR,
unsigned short nPhi) : mZVertices{nZ}, mRVertices{nR}, mPhiVertices{nPhi}, mData(nZ * nR * nPhi){};
55 const auto&
getData()
const {
return mData; }
77 size_t getDataIndex(
const size_t iz,
const size_t ir,
const size_t iphi)
const {
return (iz + mZVertices * (
ir + iphi * mRVertices)); }
83 unsigned short getNZ()
const {
return mZVertices; }
86 unsigned short getNR()
const {
return mRVertices; }
89 unsigned short getNPhi()
const {
return mPhiVertices; }
104 static size_t getIndexZ(
size_t index,
const int nz,
const int nr,
const int nphi);
112 static size_t getIndexR(
size_t index,
const int nz,
const int nr,
const int nphi);
120 static size_t getIndexPhi(
size_t index,
const int nz,
const int nr,
const int nphi);
124 void setGrid(
unsigned short nZ,
unsigned short nR,
unsigned short nPhi,
const bool resize);
130 template <
typename DataTOut = DataT>
138 int writeToFile(std::string_view
file, std::string_view option, std::string_view
name =
"data",
const int nthreads = 1)
const;
142 template <
typename DataTIn = DataT>
149 bool initFromFile(std::string_view
file, std::string_view
name =
"data",
const int nthreads = 1);
162 static void dumpSlice(std::string_view treename, std::string_view fileIn, std::string_view fileOut, std::string_view option, std::pair<unsigned short, unsigned short> rangeiR, std::pair<unsigned short, unsigned short> rangeiZ, std::pair<unsigned short, unsigned short> rangeiPhi,
const int nthreads = 1);
175 static void dumpInterpolation(std::string_view treename, std::string_view fileIn, std::string_view fileOut, std::string_view option, std::pair<float, float> rangeR, std::pair<float, float> rangeZ, std::pair<float, float> rangePhi,
const int nR,
const int nZ,
const int nPhi,
const int nthreads = 1);
184 static bool getVertices(std::string_view treename, std::string_view fileIn,
unsigned short& nR,
unsigned short& nZ,
unsigned short& nPhi);
196 unsigned short mZVertices{};
197 unsigned short mRVertices{};
198 unsigned short mPhiVertices{};
199 std::vector<DataT> mData{};
201 static auto getDataSlice(
const std::vector<DataT>&
data,
size_t entries,
const size_t values_per_entry, ULong64_t
entry);
GLuint const GLchar * name
GLsizei const GLfloat * value
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
const auto & getData() const
static size_t getIndexR(size_t index, const int nz, const int nr, const int nphi)
unsigned short getNZ() const
unsigned short getNR() const
static void dumpSlice(std::string_view treename, std::string_view fileIn, std::string_view fileOut, std::string_view option, std::pair< unsigned short, unsigned short > rangeiR, std::pair< unsigned short, unsigned short > rangeiZ, std::pair< unsigned short, unsigned short > rangeiPhi, const int nthreads=1)
void print() const
print the matrix
static void dumpInterpolation(std::string_view treename, std::string_view fileIn, std::string_view fileOut, std::string_view option, std::pair< float, float > rangeR, std::pair< float, float > rangeZ, std::pair< float, float > rangePhi, const int nR, const int nZ, const int nPhi, const int nthreads=1)
unsigned short getNPhi() const
bool initFromFile(TFile &inpf, const char *name="data")
set values from file
int writeToFile(TFile &outf, const char *name="data") const
void setGrid(unsigned short nZ, unsigned short nR, unsigned short nPhi, const bool resize)
set the grid points
static void setAliasesForDump(TTree *tree)
static void setAliases(TTree *tree)
size_t getNDataPoints() const
DataT interpolate(const DataT z, const DataT r, const DataT phi, const o2::tpc::RegularGrid3D< DataT > &grid) const
DataContainer3D< DataT > & operator*=(const DataT value)
operator overload
static size_t getIndexZ(size_t index, const int nz, const int nr, const int nphi)
static size_t getIndexPhi(size_t index, const int nz, const int nr, const int nphi)
size_t getIndexPhi(size_t index) const
static bool getVertices(std::string_view treename, std::string_view fileIn, unsigned short &nR, unsigned short &nZ, unsigned short &nPhi)
DataContainer3D()=default
default constructor for Root I/O
static DataContainer3D< DataT > * loadFromFile(TFile &inpf, const char *name="data")
get pointer to object from file (deprecated!)
DataContainer3D< DataT > & operator-=(const DataContainer3D< DataT > &other)
size_t getIndexZ(size_t index) const
DataContainer3D(unsigned short nZ, unsigned short nR, unsigned short nPhi)
DataContainer3D< DataT > & operator+=(const DataContainer3D< DataT > &other)
DataT & operator()(size_t iz, size_t ir, size_t iphi)
size_t getDataIndex(const size_t iz, const size_t ir, const size_t iphi) const
size_t getIndexR(size_t index) const
const DataT & operator()(size_t iz, size_t ir, size_t iphi) const
DataT & operator[](size_t i)
const DataT & operator[](size_t i) const
operator to directly access the values
VectorOfTObjectPtrs other
o2::InteractionRecord ir(0, 0)
std::unique_ptr< TTree > tree((TTree *) flIn.Get(std::string(o2::base::NameConf::CTFTREENAME).c_str()))