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