18#ifndef ALICEO2_FIT_RAWREADERFIT_H_ 
   19#define ALICEO2_FIT_RAWREADERFIT_H_ 
   37template <
typename RawReaderType, 
bool useTrgInput = false>
 
   49  typedef typename DigitBlockFIT_t::Digit_t 
Digit_t;
 
   55  typedef std::make_index_sequence<std::tuple_size_v<typename DigitBlockFIT_t::TupleVecDigitObjs_t>> 
IndexesAllDigits;
 
   59  typedef typename std::conditional<DigitBlockFIT_t::sNSubDigits != 1, SubDigitTmp_t, std::tuple<SubDigitTmp_t>>
::type SubDigit_t;
 
   60  typedef typename std::conditional<DigitBlockFIT_t::sNSingleSubDigits != 1, SingleSubDigitTmp_t, std::tuple<SingleSubDigitTmp_t>>
::type SingleSubDigit_t;
 
   79    reserveSubDigits1<DigitBlockFIT_t>(nSubDigits);
 
 
   97      std::apply([](
auto&... subDigit) {
 
   98        ((subDigit.clear()), ...);
 
  103      std::apply([](
auto&... singleSubDigit) {
 
  104        ((singleSubDigit.clear()), ...);
 
 
  110  template <std::size_t... IsubDigits, std::size_t... IsingleSubDigits>
 
  111  auto callGetDigit(std::index_sequence<IsubDigits...>, std::index_sequence<IsingleSubDigits...>)
 
 
  119  template <std::size_t... IDigits>
 
  123      RawReader_t::getDigits(
getRefVec<std::tuple_element_t<IDigits, typename DigitBlockFIT_t::TupleVecDigitObjs_t>>(pc)..., 
getRefVec<
typename std::vector<DetTrigInput_t>>(pc));
 
  125      RawReader_t::getDigits(
getRefVec<std::tuple_element_t<IDigits, typename DigitBlockFIT_t::TupleVecDigitObjs_t>>(pc)...);
 
 
  128  template <std::size_t... IsubDigits, std::size_t... IsingleSubDigits>
 
  129  auto callPrint(std::index_sequence<IsubDigits...>, std::index_sequence<IsingleSubDigits...>)
 const 
 
  148    outputSpec.emplace_back(
mDataOrigin, Digit_t::sChannelNameDPL, 0, o2::framework::Lifetime::Timeframe);
 
  150      std::apply([&](
const auto&... subDigit) {
 
  151        ((outputSpec.emplace_back(
mDataOrigin, (std::decay<
decltype(subDigit)>::type::value_type::sChannelNameDPL), 0, o2::framework::Lifetime::Timeframe)), ...);
 
  156      std::apply([&](
const auto&... singleSubDigit) {
 
  157        ((outputSpec.emplace_back(
mDataOrigin, (std::decay<
decltype(singleSubDigit)>::type::value_type::sChannelNameDPL), 0, o2::framework::Lifetime::Timeframe)), ...);
 
  162      outputSpec.emplace_back(
mDataOrigin, DetTrigInput_t::sChannelNameDPL, 0, o2::framework::Lifetime::Timeframe);
 
  164    outputSpec.emplace_back(
mDataOrigin, 
"RawDataMetric", 0, o2::framework::Lifetime::Timeframe);
 
 
  170      std::apply([&](
const auto&... subDigit) {
 
  176      std::apply([&](
const auto&... singleSubDigit) {
 
 
  186  template <
typename VecDigitType>
 
 
RawReader_t::DigitBlockFIT_t DigitBlockFIT_t
 
std::make_index_sequence< std::tuple_size_v< typename DigitBlockFIT_t::TupleVecDigitObjs_t > > IndexesAllDigits
 
void dumpRawDataMetrics() const
 
void accumulateDigits(o2::framework::ProcessingContext &pc)
 
RawReaderFIT(o2::header::DataOrigin dataOrigin, bool dumpData)
 
SingleSubDigit_t mVecSingleSubDigit
 
DigitBlockHelper::GetSubDigitField< typenameDigitBlockFIT_t::VecSingleSubDigit_t >::vector_type SingleSubDigitTmp_t
 
std::conditional< DigitBlockFIT_t::sNSingleSubDigits!=1, SingleSubDigitTmp_t, std::tuple< SingleSubDigitTmp_t > >::type SingleSubDigit_t
 
DigitBlockFIT_t::LookupTable_t LookupTable_t
 
bool mEnableEmptyTFprotection
 
auto callGetDigit(std::index_sequence< IsubDigits... >, std::index_sequence< IsingleSubDigits... >)
 
static constexpr bool sSingleSubDigitExists
 
void makeSnapshot(o2::framework::ProcessingContext &pc) const
 
auto & getRefVec(o2::framework::ProcessingContext &pc)
 
RawReaderType RawReader_t
 
std::make_index_sequence< DigitBlockFIT_t::sNSubDigits > IndexesSubDigit
 
std::vector< DetTrigInput_t > mVecTrgInput
 
auto callGetDigitDirectly(o2::framework::ProcessingContext &pc, std::index_sequence< IDigits... >)
 
Digit_t::DetTrigInput_t DetTrigInput_t
 
std::vector< Digit_t > mVecDigit
 
std::make_index_sequence< DigitBlockFIT_t::sNSingleSubDigits > IndexesSingleSubDigit
 
auto callPrint(std::index_sequence< IsubDigits... >, std::index_sequence< IsingleSubDigits... >) const
 
void enableEmptyTFprotection()
 
DigitBlockFIT_t::SubDigit_t SubDigitTmp_t
 
static constexpr bool sSubDigitExists
 
auto reserveSubDigits1(std::size_t nElements) -> std::enable_if_t<(T::sNSubDigits< 1)>
 
std::conditional< DigitBlockFIT_t::sNSubDigits!=1, SubDigitTmp_t, std::tuple< SubDigitTmp_t > >::type SubDigit_t
 
RawReaderFIT(const RawReaderFIT &)=default
 
auto reserveSubDigits1(std::size_t nElements) -> std::enable_if_t<(T::sNSubDigits > 0)>
 
static constexpr bool sUseTrgInput
 
DigitBlockFIT_t::Digit_t Digit_t
 
void configureOutputSpec(std::vector< o2::framework::OutputSpec > &outputSpec) const
 
o2::header::DataOrigin mDataOrigin
 
std::vector< RawDataMetric > mVecRawDataMetric
 
RawReader_t::RawDataMetric_t RawDataMetric_t
 
void reserveVecDPL(std::size_t nDigits, std::size_t nSubDigits)
 
void snapshot(const Output &spec, T const &object)
 
decltype(auto) make(const Output &spec, Args... args)
 
DataAllocator & outputs()
The data allocator is used to allocate memory for the output data.
 
GLsizei const GLfloat * value
 
GLint GLint GLsizei GLint GLenum GLenum type
 
TFitResultPtr fit(const size_t nBins, const T *arr, const T xMin, const T xMax, TF1 &func, std::string_view option="")
 
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
 
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"