File indexing completed on 2025-09-18 09:09:08
0001
0002
0003
0004
0005
0006
0007 #pragma once
0008
0009 #include "corecel/Macros.hh"
0010 #include "corecel/Types.hh"
0011
0012 namespace celeritas
0013 {
0014
0015
0016
0017
0018 struct CascadeOptions
0019 {
0020
0021
0022
0023 bool use_precompound = false;
0024
0025
0026 bool use_abla = false;
0027
0028
0029 bool use_three_body_mom = false;
0030
0031
0032 bool use_phase_space = false;
0033
0034
0035 bool do_coalescence = true;
0036
0037
0038 real_type prob_pion_absorption = 0;
0039
0040
0041
0042
0043 bool use_two_params = false;
0044
0045
0046 real_type radius_scale = 2.81967;
0047
0048
0049 real_type radius_small = 8;
0050
0051
0052 real_type radius_alpha = 0.7;
0053
0054
0055 real_type radius_trailing = 0;
0056
0057
0058 real_type fermi_scale = 1932;
0059
0060
0061 real_type xsec_scale = 1;
0062
0063
0064 real_type gamma_qd_scale = 1;
0065
0066
0067
0068
0069 real_type dp_max_doublet = 0.09;
0070
0071
0072 real_type dp_max_triplet = 0.108;
0073
0074
0075 real_type dp_max_alpha = 0.115;
0076
0077
0078 explicit CELER_FUNCTION operator bool() const
0079 {
0080
0081 return (prob_pion_absorption >= 0)
0082 && (radius_scale > 0)
0083 && (radius_small > 0)
0084 && (radius_alpha > 0)
0085 && (radius_trailing >= 0)
0086 && (fermi_scale > 0)
0087 && (xsec_scale > 0)
0088 && (gamma_qd_scale > 0)
0089 && (dp_max_doublet > 0)
0090 && (dp_max_triplet > 0)
0091 && (dp_max_alpha > 0);
0092
0093 }
0094 };
0095
0096
0097
0098 constexpr bool operator==(CascadeOptions const& a, CascadeOptions const& b)
0099 {
0100
0101 return a.use_precompound == b.use_precompound
0102 && a.use_abla == b.use_abla
0103 && a.use_three_body_mom == b.use_three_body_mom
0104 && a.use_phase_space == b.use_phase_space
0105 && a.do_coalescence == b.do_coalescence
0106 && a.prob_pion_absorption == b.prob_pion_absorption
0107 && a.use_two_params == b.use_two_params
0108 && a.radius_scale == b.radius_scale
0109 && a.radius_small == b.radius_small
0110 && a.radius_alpha == b.radius_alpha
0111 && a.radius_trailing == b.radius_trailing
0112 && a.fermi_scale == b.fermi_scale
0113 && a.xsec_scale == b.xsec_scale
0114 && a.gamma_qd_scale == b.gamma_qd_scale
0115 && a.dp_max_doublet == b.dp_max_doublet
0116 && a.dp_max_triplet == b.dp_max_triplet
0117 && a.dp_max_alpha == b.dp_max_alpha;
0118
0119 }
0120
0121
0122
0123 void validate_input(CascadeOptions const&);
0124
0125
0126 }