16#ifndef ALICEO2_IDCAVERAGEGROUPBASE_H_
17#define ALICEO2_IDCAVERAGEGROUPBASE_H_
35class IDCAverageGroupCRU;
36class IDCAverageGroupTPC;
37class IDCAverageGroupDraw;
51 IDCAverageGroupBase(
const unsigned char groupPads,
const unsigned char groupRows,
const unsigned char groupLastRowsThreshold,
const unsigned char groupLastPadsThreshold,
const unsigned int groupNotnPadsSectorEdges,
const unsigned short cru,
const int nThreads)
52 : mIDCsGrouped{groupPads, groupRows, groupLastRowsThreshold, groupLastPadsThreshold, groupNotnPadsSectorEdges, cru}, mRobustAverage(nThreads), mSector{
CRU(cru).sector()} {};
58 unsigned int getRegion()
const {
return mIDCsGrouped.getRegion(); }
68 void setIDCs(
const std::vector<float>& idcs);
83 float getUngroupedIDCValGlobal(
const unsigned int ugrow,
const unsigned int upad,
const unsigned int integrationInterval)
const {
return mIDCsUngrouped[getUngroupedIndexGlobal(ugrow, upad, integrationInterval)]; }
89 float getUngroupedIDCValLocal(
const unsigned int ulrow,
const unsigned int upad,
const unsigned int integrationInterval)
const {
return mIDCsUngrouped[getUngroupedIndex(ulrow, upad, integrationInterval)]; }
95 float getUngroupedNormedIDCValLocal(
const unsigned int ulrow,
const unsigned int upad,
const unsigned int integrationInterval)
const {
return mIDCsUngrouped[getUngroupedIndex(ulrow, upad, integrationInterval)] *
Mapper::INVPADAREA[getRegion()]; }
115 void drawGroupedIDCs(
const unsigned int integrationInterval = 0,
const std::string
filename =
"IDCsGrouped.pdf")
const { mIDCsGrouped.draw(integrationInterval,
filename); }
120 std::vector<float> mWeightsPad{};
121 std::vector<float> mWeightsRow{};
122 std::vector<float> mIDCsUngrouped{};
137 IDCAverageGroupBase(
const std::array<unsigned char, Mapper::NREGIONS>& groupPads,
const std::array<unsigned char, Mapper::NREGIONS>& groupRows,
const std::array<unsigned char, Mapper::NREGIONS>& groupLastRowsThreshold,
const std::array<unsigned char, Mapper::NREGIONS>& groupLastPadsThreshold,
const unsigned int groupNotnPadsSectorEdges,
const int nThreads)
138 : mIDCGroupHelperSector(groupPads, groupRows, groupLastRowsThreshold, groupLastPadsThreshold, groupNotnPadsSectorEdges), mRobustAverage(nThreads){};
169 float getGroupedIDCDeltaVal(
const unsigned int sector,
const unsigned int region,
unsigned int urow,
unsigned int upad,
unsigned int integrationInterval)
const {
return mIDCsGrouped.getValue(mIDCGroupHelperSector.getIndexUngrouped(sector, region, urow, upad, integrationInterval)); }
177 float getUngroupedIDCDeltaVal(
const unsigned int sector,
const unsigned int region,
unsigned int urow,
unsigned int upad,
unsigned int integrationInterval)
const {
return mIDCsUngrouped.getValue(getUngroupedIndexGlobal(sector, region, urow, upad, integrationInterval)); }
183 void drawGroupedIDCsSector(
const unsigned int sector,
const unsigned int integrationInterval,
const std::string
filename =
"IDCDeltaGroupedSector.pdf")
const { drawIDCDeltaHelper(
false,
Sector(sector), integrationInterval,
true,
filename); }
189 void drawUngroupedIDCsSector(
const unsigned int sector,
const unsigned int integrationInterval,
const std::string
filename =
"IDCDeltaUngroupedSector.pdf")
const { drawIDCDeltaHelper(
false,
Sector(sector), integrationInterval,
false,
filename); }
This file provides the structs for storing the factorized IDC values and fourier coefficients to be s...
helper class for grouping of pads and rows for one sector
class for storing grouped IDCs
class for performing robust averaging and outlier filtering
unsigned int getCRU() const
unsigned int getNIntegrationIntervals() const
float getUngroupedIDCValLocal(const unsigned int ulrow, const unsigned int upad, const unsigned int integrationInterval) const
unsigned int getUngroupedIndex(const unsigned int ulrow, const unsigned int upad, const unsigned int integrationInterval) const
float getUngroupedNormedIDCValLocal(const unsigned int ulrow, const unsigned int upad, const unsigned int integrationInterval) const
unsigned int getUngroupedIndexGlobal(const unsigned int ugrow, const unsigned int upad, const unsigned int integrationInterval) const
std::vector< RobustAverage > mRobustAverage
! object for averaging (each thread will get his one object)
const auto & getIDCGroup() const
void setIDCs(const std::vector< float > &idcs)
float getUngroupedIDCValGlobal(const unsigned int ugrow, const unsigned int upad, const unsigned int integrationInterval) const
void drawUngroupedIDCs(const unsigned int integrationInterval=0, const std::string filename="IDCsUngrouped.pdf") const
void drawGroupedIDCs(const unsigned int integrationInterval=0, const std::string filename="IDCsGrouped.pdf") const
unsigned int getRegion() const
void setIDCs(std::vector< float > &&idcs)
IDCAverageGroupBase(const unsigned char groupPads, const unsigned char groupRows, const unsigned char groupLastRowsThreshold, const unsigned char groupLastPadsThreshold, const unsigned int groupNotnPadsSectorEdges, const unsigned short cru, const int nThreads)
auto getIDCGroupData() &&
void drawUngroupedIDCsSector(const unsigned int sector, const unsigned int integrationInterval, const std::string filename="IDCDeltaUngroupedSector.pdf") const
void drawIDCDeltaHelper(const bool type, const Sector sector, const unsigned int integrationInterval, const bool grouped, const std::string filename) const
helper function for drawing IDCDelta
std::vector< RobustAverage > mRobustAverage
! object for averaging (each thread will get his one object)
void resetGroupedIDCs()
resetting the grouped IDCs
void resizeGroupedIDCs()
set correct size for grouped IDCs
void drawGroupedIDCsSide(const unsigned int integrationInterval, const std::string filename="IDCDeltaGroupedSide.pdf") const
const auto & getIDCUngroupData() const &
auto getIDCGroupData() &&
IDCGroupHelperSector mIDCGroupHelperSector
helper object containing the grouping parameter and methods for accessing data indices
float getGroupedIDCDeltaVal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval) const
auto & getIDCGroupHelperSector() const
unsigned int getUngroupedIndexGlobal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval) const
IDCAverageGroupBase(const std::array< unsigned char, Mapper::NREGIONS > &groupPads, const std::array< unsigned char, Mapper::NREGIONS > &groupRows, const std::array< unsigned char, Mapper::NREGIONS > &groupLastRowsThreshold, const std::array< unsigned char, Mapper::NREGIONS > &groupLastPadsThreshold, const unsigned int groupNotnPadsSectorEdges, const int nThreads)
unsigned int getNIntegrationIntervals() const
void drawGroupedIDCsSector(const unsigned int sector, const unsigned int integrationInterval, const std::string filename="IDCDeltaGroupedSector.pdf") const
void drawUngroupedIDCsSide(const unsigned int integrationInterval, const std::string filename="IDCDeltaUngroupedSide.pdf") const
float getUngroupedIDCDeltaVal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval) const
const auto & getIDCGroupData() const &
void setIDCs(IDCDelta< float > &&idcs, const Side side)
void setIDCs(const IDCDelta< float > &idcs, const Side side)
Helper class for either perform the grouping or draw the grouping.
Helper class for accessing grouped pads for one sector.
static unsigned int getUngroupedIndexGlobal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval)
Class to hold grouped IDC values for one CRU for one TF.
static const std::vector< unsigned int > OFFSETCRULOCAL[NREGIONS]
row offset in cru for given local pad row
static constexpr float INVPADAREA[NREGIONS]
inverse size of the pad area padwidth*padLength
static constexpr unsigned int NREGIONS
total number of regions in one sector
static constexpr int getNumberOfPadsPerSide()
static constexpr unsigned int PADSPERREGION[NREGIONS]
number of pads per CRU
static constexpr unsigned int OFFSETCRUGLOBAL[PADROWS]
row offset in cru for given global pad row
static constexpr int MAXSECTOR
GLint GLint GLsizei GLint GLenum GLenum type
Global TPC definitions and constants.
struct to access and set Delta IDCs