11#ifndef ALICEO2_BASE_DETMATRIXCACHE_H
12#define ALICEO2_BASE_DETMATRIXCACHE_H
32template <
typename T = o2::math_utils::Transform3D>
52 int getSize()
const {
return mCache.size(); }
57 if ((
unsigned int)sensID >= mCache.size()) {
58 LOG(fatal) <<
"SensID " << sensID <<
" exceeds cache size of " << mCache.size();
63 const T&
getMatrix(
int sensID)
const {
return mCache[sensID]; }
64 bool isFilled()
const {
return !mCache.empty(); }
67 std::vector<T> mCache;
168 int getCacheHelper(
int sensID)
170 if (sensID >= mIndirectSize) {
171 LOG(fatal) <<
"SendID " << sensID <<
" exceeds indirect cache size of " << mIndirectSize;
173 if (mIndirection[sensID] >= 0) {
174 return mIndirection[sensID];
176 return (mIndirection[sensID] = mNextEntry++);
179 int mIndirectSize = 0;
181 std::vector<short> mIndirection;
Static class with identifiers, bitmasks and names for ALICE detectors.
static constexpr const char * getName(ID id)
names of defined detectors
Variant of DetMatrixCache for non consecutive indexing.
int getIndirectSize() const
const Mat3D & getMatrixT2L(int sensID) const
void setMatrixT2L(const Mat3D &matrix, int sensID)
DetMatrixCacheIndirect(const o2::detectors::DetID &id)
DetMatrixCacheIndirect & operator=(const DetMatrixCacheIndirect &geom)=delete
o2::math_utils::Rotation2Df_t Rot2D
void setSize(int s)=delete
void setMatrixT2GRot(const Rot2D &matrix, int sensID)
o2::math_utils::Transform3D Mat3D
void setMatrixL2G(const Mat3D &matrix, int sensID)
void setMatrixT2G(const Mat3D &matrix, int sensID)
const Rot2D & getMatrixT2GRot(int sensID) const
const Mat3D & getMatrixL2G(int sensID) const
~DetMatrixCacheIndirect() override=default
bool isMatrixAvailable(int sensID) const
DetMatrixCacheIndirect(const DetMatrixCacheIndirect &src)=delete
DetMatrixCacheIndirect()=default
const Mat3D & getMatrixT2G(int sensID) const
MatrixCache< Rot2D > & getCacheT2GRot()
virtual void fillMatrixCache(int mask)=0
o2::detectors::DetID mDetID
detector ID
const Mat3D & getMatrixT2L(int sensID) const
const MatrixCache< Mat3D > & getCacheT2L() const
const char * getName() const
const Rot2D & getMatrixT2GRot(int sensID) const
virtual ~DetMatrixCache()=default
this may serve as a base class for detector interface to geometry, make it virtual
MatrixCache< Mat3D > & getCacheL2G()
MatrixCache< Mat3D > & getCacheT2L()
MatrixCache< Rot2D > mT2GRot
Tracking to Global matrices in case of barrel (simple rotation)
MatrixCache< Mat3D > mL2G
Local to Global matrices.
DetMatrixCache(const DetMatrixCache &src)=delete
const o2::detectors::DetID & getDetID() const
DetMatrixCache & operator=(const DetMatrixCache &geom)=delete
o2::math_utils::Rotation2Df_t Rot2D
MatrixCache< Mat3D > mT2G
Tracking to Global matrices (general case)
const Mat3D & getMatrixL2G(int sensID) const
ClassDef(DetMatrixCache, 1)
const MatrixCache< Mat3D > & getCacheT2G() const
int mSize
prebooked number of sensors
MatrixCache< Mat3D > & getCacheT2G()
o2::math_utils::Transform3D Mat3D
DetMatrixCache(const o2::detectors::DetID &id)
const MatrixCache< Rot2D > & getCacheT2GRot() const
const MatrixCache< Mat3D > & getCacheL2G() const
const Mat3D & getMatrixT2G(int sensID) const
MatrixCache< Mat3D > mT2L
Tracking to Local matrices.
MatrixCache is a vector of cached transform matrices (per sensor) for specific Transformation type.
int getSize() const
get the size of the cache
void setMatrix(const T &mat, int sensID)
assign matrix to a slot
const T & getMatrix(int sensID) const
void setSize(int s)
set the size of the cache
MatrixCache(const MatrixCache &src)=delete
MatrixCache & operator=(const MatrixCache &src)=delete
std::string detectors(const std::vector< std::string > &det, unsigned mask)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"