Skip to content
Snippets Groups Projects
  • Sergei Zharko's avatar
    ddac3c05
    online: · ddac3c05
    Sergei Zharko authored
     - QA for V0-trigger
     - Masking channels (BMON as example) in digi event-selector
    ddac3c05
    History
    online:
    Sergei Zharko authored
     - QA for V0-trigger
     - Masking channels (BMON as example) in digi event-selector
Definitions.h 3.80 KiB
/* Copyright (C) 2023 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
   SPDX-License-Identifier: GPL-3.0-only
   Authors: Felix Weiglhofer [committer] */
#ifndef CBM_BASE_TYPES_H
#define CBM_BASE_TYPES_H

#include "MicrosliceDescriptor.hpp"  // For fles::Subsystem
#include "util/EnumDict.h"

#include <cstdint>

namespace cbm::algo
{

  // typealias for Rust-like fixed size integer types
  using i8  = std::int8_t;
  using u8  = std::uint8_t;
  using i16 = std::int16_t;
  using u16 = std::uint16_t;
  using i32 = std::int32_t;
  using u32 = std::uint32_t;
  using i64 = std::int64_t;
  using u64 = std::uint64_t;
  using f32 = float;
  using f64 = double;

#ifdef CBM_ALGO_REAL64
  using real = f64;
#else
  using real = f32;
#endif

  enum class Step
  {
    Unpack,
    DigiTrigger,
    LocalReco,
    Tracking,
  };

  enum class RecoData
  {
    DigiTimeslice,  //< Raw output from unpackers
    DigiEvent,      //< Digis after event building
    Cluster,
    Hit,
    Track,
  };

  enum class Setup
  {
    mCBM2022,
    mCBM2024_03,
    mCBM2024_05,
    mCBM2025_02,
  };

  enum class QaStep
  {
    BeamBmon,
    UnpackBmon,
    UnpackSts,
    UnpackMvd,
    UnpackRich,
    UnpackTrd1d,
    UnpackTrd2d,
    UnpackMuch,
    UnpackTof,
    UnpackFsd,
    EventBuilding,
    RecoBmon,
    RecoSts,
    RecoMvd,
    RecoRich,
    RecoTrd1d,
    RecoTrd2d,
    RecoMuch,
    RecoTof,
    RecoFsd,
    Tracking,
    V0Finder,
    V0Trigger,
  };

}  // namespace cbm::algo

CBM_ENUM_DICT(fles::Subsystem,
  // CBM detectors
  {"STS", fles::Subsystem::STS},
  {"MVD", fles::Subsystem::MVD},
  {"RICH", fles::Subsystem::RICH},
  {"TRD", fles::Subsystem::TRD},
  {"TRD2D", fles::Subsystem::TRD2D},
  {"MUCH", fles::Subsystem::MUCH},
  {"TOF", fles::Subsystem::TOF},

  // Other detectors (experimental)
  {"ECAL", fles::Subsystem::ECAL},
  {"PSD", fles::Subsystem::PSD},
  {"BMON", fles::Subsystem::BMON},
  {"TRB3", fles::Subsystem::TRB3},
  {"Hodoscope", fles::Subsystem::Hodoscope},
  {"Cherenkov", fles::Subsystem::Cherenkov},
  {"LeadGlass", fles::Subsystem::LeadGlass},

  // FLES (pattern generators)
  {"FLES", fles::Subsystem::FLES},
);

CBM_ENUM_DICT(cbm::algo::Step,
  {"Unpack", Step::Unpack},
  {"DigiTrigger", Step::DigiTrigger},
  {"LocalReco", Step::LocalReco},
  {"Tracking", Step::Tracking}
);

CBM_ENUM_DICT(cbm::algo::RecoData,
  {"DigiTimeslice", RecoData::DigiTimeslice},
  {"DigiEvent", RecoData::DigiEvent},
  {"Cluster", RecoData::Cluster},
  {"Hit", RecoData::Hit},
  {"Track", RecoData::Track}
);

CBM_ENUM_DICT(cbm::algo::Setup,
  {"mCBM2022", cbm::algo::Setup::mCBM2022},
  {"mCBM2024_03", cbm::algo::Setup::mCBM2024_03},
  {"mCBM2024_05", cbm::algo::Setup::mCBM2024_05},
  {"mCBM2025_02", cbm::algo::Setup::mCBM2025_02}
);

CBM_ENUM_DICT(cbm::algo::QaStep,
  {"BeamBmon", cbm::algo::QaStep::BeamBmon},
  {"UnpackBmon", cbm::algo::QaStep::UnpackBmon},
  {"UnpackSts", cbm::algo::QaStep::UnpackSts},
  {"UnpackMvd", cbm::algo::QaStep::UnpackMvd},
  {"UnpackRich", cbm::algo::QaStep::UnpackRich},
  {"UnpackTrd1d", cbm::algo::QaStep::UnpackTrd1d},
  {"UnpackTrd2d", cbm::algo::QaStep::UnpackTrd2d},
  {"UnpackMuch", cbm::algo::QaStep::UnpackMuch},
  {"UnpackTof", cbm::algo::QaStep::UnpackTof},
  {"UnpackFsd", cbm::algo::QaStep::UnpackFsd},
  {"EventBuilding", cbm::algo::QaStep::EventBuilding},
  {"RecoBmon", cbm::algo::QaStep::RecoBmon},
  {"RecoSts", cbm::algo::QaStep::RecoSts},
  {"RecoMvd", cbm::algo::QaStep::RecoMvd},
  {"RecoRich", cbm::algo::QaStep::RecoRich},
  {"RecoTrd1d", cbm::algo::QaStep::RecoTrd1d},
  {"RecoTrd2d", cbm::algo::QaStep::RecoTrd2d},
  {"RecoMuch", cbm::algo::QaStep::RecoMuch},
  {"RecoTof", cbm::algo::QaStep::RecoTof},
  {"RecoFsd", cbm::algo::QaStep::RecoFsd},
  {"Tracking", cbm::algo::QaStep::Tracking},
  {"V0Finder", cbm::algo::QaStep::V0Finder},
  {"V0Trigger", cbm::algo::QaStep::V0Trigger}
);

#endif