17#ifndef ALICEO2_SACFACTORIZATION_H_
18#define ALICEO2_SACFACTORIZATION_H_
24#include <boost/property_tree/ptree.hpp>
61 auto getSACValue(
const unsigned int stack,
const unsigned int interval)
const {
return mSACs[
stack][interval]; }
137 void setSACs(std::vector<int32_t>&& SACs,
const unsigned int stack) { mSACs[
stack] = std::move(SACs); }
141 static void setNThreads(
const int nThreads) { sNThreads = nThreads; }
144 static void setMinCompressedSACDelta(
const float minSACDeltaValue) { o2::conf::ConfigurableParam::setValue<float>(
"TPCSACCompressionParam",
"minSACDeltaValue", minSACDeltaValue); }
147 static void setMaxCompressedSACDelta(
const float maxSACDeltaValue) { o2::conf::ConfigurableParam::setValue<float>(
"TPCSACCompressionParam",
"maxSACDeltaValue", maxSACDeltaValue); }
170 void drawSACDeltaSector(
const unsigned int sector,
const unsigned int interval,
const float minZ = 0,
const float maxZ = -1,
const SACDeltaCompression compression = SACDeltaCompression::NO,
const std::string
filename =
"SACDeltaSector.pdf")
const { drawSACDeltaHelper(
false,
Sector(sector), interval, compression,
filename,
minZ,
maxZ); }
193 void drawSACDeltaSide(
const o2::tpc::Side side,
const unsigned int interval,
const float minZ = 0,
const float maxZ = -1,
const SACDeltaCompression compression = SACDeltaCompression::NO,
const std::string
filename =
"SACDeltaSide.pdf")
const { drawSACDeltaHelper(
true,
side ==
Side::A ?
Sector(0) :
Sector(
Sector::MAXSECTOR - 1), interval, compression,
filename,
minZ,
maxZ); }
198 void dumpToFile(
const char* outFileName =
"SACFactorized.root",
const char* outName =
"SACFactorized")
const;
202 void dumpToTree(
int intervals = -1,
const char* outFileName =
"SACTree.root")
const;
219 const unsigned int mTimeFrames{};
223 std::array<int, GEMSTACKS> mOutlierMap{};
224 SACDelta<float> mSACDelta{};
225 inline static int sNThreads{1};
228 void drawSACDeltaHelper(
const bool type,
const Sector sector,
const unsigned int interval,
const SACDeltaCompression compression,
const std::string
filename,
const float minZ,
const float maxZ)
const;
231 void drawSACHelper(
const bool type,
const Sector sector,
const unsigned int interval,
const std::string
filename,
const float minZ,
const float maxZ)
const;
234 void drawSACZeroHelper(
const bool type,
const Sector sector,
const std::string
filename,
const float minZ,
const float maxZ)
const;
237 void drawSACZeroOutlierHelper(
const bool type,
const Sector sector,
const std::string
filename,
const float minZ,
const float maxZ)
const;
This file provides the structs for storing the factorized IDC values and fourier coefficients to be s...
static SACDelta< DataT > getCompressedSACs(const SACDelta< float > &sacDeltaUncompressed)
const std::vector< float > & getSACZero(const o2::tpc::Side side) const
const auto & getSACOne() const &
auto getSACDeltaHighCompressed() const
void reset()
resetting aggregated SACs
void drawSACDeltaSector(const unsigned int sector, const unsigned int interval, const float minZ=0, const float maxZ=-1, const SACDeltaCompression compression=SACDeltaCompression::NO, const std::string filename="SACDeltaSector.pdf") const
const auto & getSACZero() const
static unsigned int getStackInSide(const unsigned int sector, const unsigned int stack)
float getSACDeltaVal(const unsigned int stack, unsigned int interval) const
void setSACZero(const SACZero &sacZero)
void drawSACZeroOutlierSector(const unsigned int sector, const float minZ=0, const float maxZ=-1, const std::string filename="SACZeroOutlierSector.pdf") const
static unsigned int getStack(const unsigned int sector, const unsigned int stack)
unsigned long getNintervals(const int stack=0) const
void setSACs(std::vector< int32_t > &&SACs, const unsigned int stack)
void drawSACDeltaSide(const o2::tpc::Side side, const unsigned int interval, const float minZ=0, const float maxZ=-1, const SACDeltaCompression compression=SACDeltaCompression::NO, const std::string filename="SACDeltaSide.pdf") const
auto getSACDeltaUncompressed() &&
void dumpToTree(int intervals=-1, const char *outFileName="SACTree.root") const
void drawSACZeroSector(const unsigned int sector, const float minZ=0, const float maxZ=-1, const std::string filename="SACZeroSector.pdf") const
void drawSACsSector(const unsigned int sector, const unsigned int interval, const float minZ=0, const float maxZ=-1, const std::string filename="SACsSector.pdf") const
void calcSACDelta()
calculate \Delta I(r,\phi,t) = I(r,\phi,t) / ( I_0(r,\phi) * I_1(t) )
void createStatusMap()
create outlier map using the SAC0
void calcSACOne()
calculate I_1(t) = <I(r,\phi,t) / I_0(r,\phi)>_{r,\phi}
unsigned long getNIntegrationIntervals(const int stack=0) const
SACFactorization()=default
default constructor
void drawSACsSide(const o2::tpc::Side side, const unsigned int interval, const float minZ=0, const float maxZ=-1, const std::string filename="SACsSide.pdf") const
static void setMinCompressedSACDelta(const float minSACDeltaValue)
float getSACZeroVal(const unsigned int stack) const
const std::vector< float > & getSACDeltaUncompressed(const o2::tpc::Side side) const
const auto & getSACs() const
static Side getSide(const unsigned int gemStack)
const auto & getSACDeltaUncompressed() const &
void drawSACZeroOutlierSide(const o2::tpc::Side side, const float minZ=0, const float maxZ=-1, const std::string filename="SACZeroOutlierSide.pdf") const
auto getSACDeltaMediumCompressed() const
const std::vector< float > & getSACOne(const o2::tpc::Side side) const
auto getSACValue(const unsigned int stack, const unsigned int interval) const
unsigned int getNTimeframes() const
void calcSACZero()
calculate I_0(r,\phi) = <I(r,\phi,t)>_t
static unsigned int getSACDeltaIndex(const unsigned int stack, unsigned int interval)
const auto & getOutlierMap() const
float getSACOneVal(const Side side, unsigned int interval) const
SACFactorization(const unsigned int timeFrames)
IDCDeltaCompression SACDeltaCompression
void dumpToFile(const char *outFileName="SACFactorized.root", const char *outName="SACFactorized") const
static void setMaxCompressedSACDelta(const float maxSACDeltaValue)
static void setNThreads(const int nThreads)
void drawSACZeroSide(const o2::tpc::Side side, const float minZ=0, const float maxZ=-1, const std::string filename="SACZeroSide.pdf") const
static constexpr int MAXSECTOR
GLint GLint GLsizei GLint GLenum GLenum type
GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat maxZ
Global TPC definitions and constants.
constexpr unsigned short GEMSTACKS
IDCDeltaCompression
IDC Delta IDC Compression types.
constexpr unsigned short GEMSTACKSPERSECTOR
constexpr unsigned short GEMSTACKSPERSIDE
float getValue(const Side side, const int index) const
std::array< IDCDelta< DataT >, SIDES > mSACDelta
std::array< IDCOne, SIDES > mSACOne
float getValue(const Side side, const int interval) const
float getValueIDCZero(const Side side, const int stackInSector) const
std::array< IDCZero, SIDES > mSACZero