IAP GITLAB

Skip to content
Snippets Groups Projects
ParticleConversion.h 1.73 KiB
Newer Older

/**
 * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
 *
 * See file AUTHORS for a list of contributors.
 *
 * This software is distributed under the terms of the GNU General Public
 * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
 * the license.
 */

#ifndef _include_processes_sibyll_particles_h_
#define _include_processes_sibyll_particles_h_

#include <corsika/particles/ParticleProperties.h>
#include <bitset2/bitset2.hpp>

namespace corsika::process::sibyll {
ralfulrich's avatar
ralfulrich committed
  enum class SibyllCode : int8_t;
  using SibyllCodeIntType = std::underlying_type<SibyllCode>::type;
#include <corsika/process/sibyll/Generated.inc>
  bool constexpr KnownBySibyll(corsika::particles::Code pCode) {
    return isKnown[static_cast<corsika::particles::CodeIntType>(pCode)];
ralfulrich's avatar
ralfulrich committed
  bool constexpr CanInteract(corsika::particles::Code pCode) {
    return canInteract[static_cast<corsika::particles::CodeIntType>(pCode)];
  }

ralfulrich's avatar
ralfulrich committed
  SibyllCode constexpr ConvertToSibyll(corsika::particles::Code pCode) {
    //~ assert(handledBySibyll(pCode));
ralfulrich's avatar
ralfulrich committed
    return static_cast<SibyllCode>(
        corsika2sibyll[static_cast<corsika::particles::CodeIntType>(pCode)]);
ralfulrich's avatar
ralfulrich committed

ralfulrich's avatar
ralfulrich committed
  corsika::particles::Code constexpr ConvertFromSibyll(SibyllCode pCode) {
    return sibyll2corsika[static_cast<SibyllCodeIntType>(pCode) - minSibyll];
ralfulrich's avatar
ralfulrich committed
  int constexpr ConvertToSibyllRaw(corsika::particles::Code pCode) {
ralfulrich's avatar
ralfulrich committed
    return (int)static_cast<corsika::process::sibyll::SibyllCodeIntType>(
        corsika::process::sibyll::ConvertToSibyll(pCode));
ralfulrich's avatar
ralfulrich committed
  int constexpr GetSibyllXSCode(corsika::particles::Code pCode) {
    return corsika2sibyllXStype[static_cast<corsika::particles::CodeIntType>(pCode)];
  }
ralfulrich's avatar
ralfulrich committed

} // namespace corsika::process::sibyll