16#ifndef ALICEO2_TPC_IDCCCDBHELPER_H_
17#define ALICEO2_TPC_IDCCCDBHELPER_H_
23#include <fmt/format.h>
29class IDCGroupHelperSector;
33template <
typename DataT>
59template <
typename DataT =
unsigned short>
96 float getIDCZeroVal(
const unsigned int sector,
const unsigned int region,
unsigned int urow,
unsigned int upad)
const;
104 float getIDCDeltaVal(
const unsigned int sector,
const unsigned int region,
unsigned int urow,
unsigned int upad,
unsigned int integrationInterval)
const;
120 float getIDCVal(
const unsigned int sector,
const unsigned int region,
unsigned int urow,
unsigned int upad,
unsigned int integrationInterval)
const;
154 void drawIDCSector(
const unsigned int sector,
const unsigned int integrationInterval,
const std::string
filename =
"IDCSector.pdf",
const float minZ = 0,
const float maxZ = -1)
const { drawIDCHelper(
false,
Sector(sector), integrationInterval,
filename,
minZ,
maxZ); }
168 TCanvas*
drawIDCZeroCanvas(TCanvas* outputCanvas, std::string_view
type,
int nbins1D,
float xMin1D,
float xMax1D,
int integrationInterval = -1)
const;
170 TCanvas*
drawIDCZeroScale(TCanvas* outputCanvas,
const bool rejectOutlier =
true)
const;
174 TCanvas*
drawIDCZeroStackCanvas(TCanvas* outputCanvas,
Side side, std::string_view
type,
int nbins1D,
float xMin1D,
float xMax1D,
int integrationInterval = -1)
const;
176 TCanvas*
drawIDCOneCanvas(TCanvas* outputCanvas,
int nbins1D,
float xMin1D,
float xMax1D,
int integrationIntervals = -1)
const;
235 float mScaleIDC0Aside = 1.0;
236 float mScaleIDC0Cside = 1.0;
238 std::array<IDCZero*, SIDES> mIDCZero = {
nullptr,
nullptr};
239 std::array<IDCDelta<DataT>*,
SIDES> mIDCDelta = {
nullptr,
nullptr};
240 std::array<IDCOne*, SIDES> mIDCOne = {
nullptr,
nullptr};
241 std::array<IDCGroupHelperSector*, SIDES> mHelperSector = {
nullptr,
nullptr};
242 std::array<FourierCoeff*, SIDES> mFourierCoeff = {
nullptr,
nullptr};
243 std::unique_ptr<CalDet<PadFlags>> mPadFlagsMap;
248 void drawIDCZeroHelper(
const bool type,
const Sector sector,
const std::string
filename,
const float minZ,
const float maxZ)
const;
254 void drawIDCDeltaHelper(
const bool type,
const Sector sector,
const unsigned int integrationInterval,
const std::string
filename,
const float minZ,
const float maxZ)
const;
260 void drawIDCHelper(
const bool type,
const Sector sector,
const unsigned int integrationInterval,
const std::string
filename,
const float minZ,
const float maxZ)
const;
263 void drawPadFlagMap(
const bool type,
const Sector sector,
const std::string
filename,
const PadFlags flag)
const;
271 static unsigned int getUngroupedIndexGlobal(
const unsigned int sector,
const unsigned int region,
unsigned int urow,
unsigned int upad,
unsigned int integrationInterval);
CalDet< float > getIDCZeroCalDet() const
CalDet< PadFlags > * getPadStatusMap() const
TCanvas * drawIDCOneCanvas(TCanvas *outputCanvas, int nbins1D, float xMin1D, float xMax1D, int integrationIntervals=-1) const
void scaleIDC0(const float factor, const Side side)
void dumpToFourierCoeffToTree(const char *outFileName="FourierCCDBTree.root") const
float getIDCZeroVal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad) const
IDCCCDBHelper()=default
constructor
void setIDCZero(IDCZero *idcZero, const Side side=Side::A)
setting the 0D-IDCs
void setIDCZeroScale(const bool rejectOutlier=true)
TCanvas * drawIDCZeroScale(TCanvas *outputCanvas, const bool rejectOutlier=true) const
void createOutlierMap()
create the outlier map with the set unscaled IDC0 map
std::vector< CalDet< float > > getIDCDeltaCalDet() const
void drawIDCZeroSide(const o2::tpc::Side side, const std::string filename="IDCZeroSide.pdf", const float minZ=0, const float maxZ=-1) const
TCanvas * drawIDCZeroCanvas(TCanvas *outputCanvas, std::string_view type, int nbins1D, float xMin1D, float xMax1D, int integrationInterval=-1) const
TCanvas * drawFourierCoeff(TCanvas *outputCanvas, Side side, int nbins1D, float xMin1D, float xMax1D) const
void drawIDCSide(const o2::tpc::Side side, const unsigned int integrationInterval, const std::string filename="IDCSide.pdf", const float minZ=0, const float maxZ=-1) const
void drawPadStatusFlagsMapSector(const unsigned int sector, const PadFlags flag, const std::string filename="PadStatusFlags_Sector.pdf") const
void setIDCDelta(IDCDelta< DataT > *idcDelta, const Side side=Side::A)
setting the IDCDelta class member
void drawIDCZeroSector(const unsigned int sector, const std::string filename="IDCZeroSector.pdf", const float minZ=0, const float maxZ=-1) const
void setIDCOne(IDCOne *idcOne, const Side side=Side::A)
setting the 1D-IDCs
void drawIDCDeltaSide(const o2::tpc::Side side, const unsigned int integrationInterval, const std::string filename="IDCDeltaSide.pdf", const float minZ=0, const float maxZ=-1) const
std::pair< int, int > getNOutliers() const
float getIDCVal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval) const
void drawIDCDeltaSector(const unsigned int sector, const unsigned int integrationInterval, const std::string filename="IDCDeltaSector.pdf", const float minZ=0, const float maxZ=-1) const
static float getMeanIDC0(const Side side, const IDCZero &idcZero, const CalDet< PadFlags > *outlierMap)
unsigned int getNIntegrationIntervalsIDCDelta(const o2::tpc::Side side) const
float getIDCOneVal(const o2::tpc::Side side, const unsigned int integrationInterval) const
void dumpToTree(const Side side, const char *outFileName="IDCCCDBTree.root") const
void setPadStatusMap(const CalDet< PadFlags > &outliermap)
static float getStackMedian(const IDCZero &idczero, const Sector sector, const GEMstack stack)
void drawIDCSector(const unsigned int sector, const unsigned int integrationInterval, const std::string filename="IDCSector.pdf", const float minZ=0, const float maxZ=-1) const
void setFourierCoeffs(FourierCoeff *fourier, const Side side=Side::A)
setting the fourier coefficients
unsigned int getNIntegrationIntervalsIDCOne(const o2::tpc::Side side) const
void drawPadStatusFlagsMapSide(const o2::tpc::Side side, const PadFlags flag, const std::string filename="PadStatusFlags_Side.pdf") const
TCanvas * drawIDCZeroStackCanvas(TCanvas *outputCanvas, Side side, std::string_view type, int nbins1D, float xMin1D, float xMax1D, int integrationInterval=-1) const
TCanvas * drawIDCZeroRadialProfile(TCanvas *outputCanvas, int nbinsY, float yMin, float yMax) const
float getIDCDeltaVal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval) const
void setGroupingParameter(IDCGroupHelperSector *helperSector, const Side side=Side::A)
setting the grouping parameters
void dumpToTreeIDCDelta(const Side side, const char *outFileName="IDCCCDBTreeDeltaIDC.root") const
Helper class for accessing grouped pads for one sector.
static constexpr int MAXSECTOR
GLint GLint GLsizei GLint GLenum GLenum type
GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat maxZ
Global TPC definitions and constants.
GEMstack
TPC GEM stack types.
@ IDCOne
IDC1: I_1(t) = <I(r,\phi,t) / I_0(r,\phi)>_{r,\phi}.
@ IDCZero
IDC0: I_0(r,\phi) = <I(r,\phi,t)>_t.
@ IDCDelta
IDCDelta: \Delta I(r,\phi,t) = I(r,\phi,t) / ( I_0(r,\phi) * I_1(t) )
constexpr unsigned char SIDES
struct containing the fourier coefficients calculated from IDC0 for n timeframes
struct to access and set Delta IDCs
struct containing the ITPC0 values (integrated TPC clusters)