use crate::NuclideId;
pub const NUM_REACTIONS: usize = 574;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Reaction {
pub id: u32,
pub name: &'static str,
pub mt: i32,
pub label: &'static str,
pub doc: &'static str,
}
pub static REACTIONS: [Reaction; NUM_REACTIONS] = [
Reaction {
id: 1089,
name: "a",
mt: 107,
label: "(z,a)",
doc: "(z,a) Production of alpha",
},
Reaction {
id: 1092,
name: "d",
mt: 104,
label: "(z,d)",
doc: "(z,d) Production of d",
},
Reaction {
id: 1102,
name: "n",
mt: 4,
label: "(z,n)",
doc: "(z,n) One neutron in exit channel",
},
Reaction {
id: 1104,
name: "p",
mt: 103,
label: "(z,p)",
doc: "(z,p) Production of p",
},
Reaction {
id: 1108,
name: "t",
mt: 105,
label: "(z,t)",
doc: "(z,t) Production of t",
},
Reaction {
id: 1113,
name: "y",
mt: 253,
label: "Average xi^2/(2*xi)",
doc: "Average xi^2/(2*xi)",
},
Reaction {
id: 35974,
name: "ec",
mt: 0,
label: "(z,ec)",
doc: "(z,ec)",
},
Reaction {
id: 36005,
name: "da",
mt: 117,
label: "(z,da)",
doc: "(z,da) Production of d and a",
},
Reaction {
id: 36125,
name: "it",
mt: 0,
label: "(z,it)",
doc: "(z,it)",
},
Reaction {
id: 36388,
name: "pt",
mt: 116,
label: "(z,pt)",
doc: "(z,pt) Production of p and t",
},
Reaction {
id: 36401,
name: "pa",
mt: 112,
label: "(z,pa)",
doc: "(z,pa) Production of p and alpha",
},
Reaction {
id: 36404,
name: "pd",
mt: 115,
label: "(z,pd)",
doc: "(z,pd) Production of p and d",
},
Reaction {
id: 36458,
name: "nd",
mt: 32,
label: "(z,nd)",
doc: "(z,nd) Production of n and d",
},
Reaction {
id: 36463,
name: "na",
mt: 22,
label: "(z,n+a)",
doc: "(z,na) Production of n and alpha",
},
Reaction {
id: 36474,
name: "nt",
mt: 33,
label: "(z,nt)",
doc: "(z,nt) Production of n and t",
},
Reaction {
id: 36478,
name: "np",
mt: 28,
label: "(z,n+p)",
doc: "(z,np) Production of n and p",
},
Reaction {
id: 36565,
name: "sf",
mt: 0,
label: "(z,sf)",
doc: "(z,sf)",
},
Reaction {
id: 1184710,
name: "a_8",
mt: 808,
label: "(z,a8)",
doc: "(z,a8)",
},
Reaction {
id: 1184711,
name: "a_9",
mt: 809,
label: "(z,a9)",
doc: "(z,a9)",
},
Reaction {
id: 1184712,
name: "a_6",
mt: 806,
label: "(z,a6)",
doc: "(z,a6)",
},
Reaction {
id: 1184713,
name: "a_7",
mt: 807,
label: "(z,a7)",
doc: "(z,a7)",
},
Reaction {
id: 1184714,
name: "a_4",
mt: 804,
label: "(z,a4)",
doc: "(z,a4)",
},
Reaction {
id: 1184715,
name: "a_5",
mt: 805,
label: "(z,a5)",
doc: "(z,a5)",
},
Reaction {
id: 1184716,
name: "a_2",
mt: 802,
label: "(z,a2)",
doc: "(z,a2)",
},
Reaction {
id: 1184717,
name: "a_3",
mt: 803,
label: "(z,a3)",
doc: "(z,a3)",
},
Reaction {
id: 1184718,
name: "a_0",
mt: 800,
label: "(z,a0)",
doc: "(z,a0)",
},
Reaction {
id: 1184719,
name: "a_1",
mt: 801,
label: "(z,a1)",
doc: "(z,a1)",
},
Reaction {
id: 1187111,
name: "eca",
mt: 0,
label: "(z,eca)",
doc: "(z,eca)",
},
Reaction {
id: 1187126,
name: "ecp",
mt: 0,
label: "(z,ecp)",
doc: "(z,ecp)",
},
Reaction {
id: 1187778,
name: "d_9",
mt: 659,
label: "(z,d9)",
doc: "(n,d9)",
},
Reaction {
id: 1187779,
name: "d_8",
mt: 658,
label: "(z,d8)",
doc: "(n,d8)",
},
Reaction {
id: 1187784,
name: "d_3",
mt: 653,
label: "(z,d3)",
doc: "(n,d3)",
},
Reaction {
id: 1187785,
name: "d_2",
mt: 652,
label: "(z,d2)",
doc: "(n,d2)",
},
Reaction {
id: 1187786,
name: "d_1",
mt: 651,
label: "(z,d1)",
doc: "(n,d1)",
},
Reaction {
id: 1187787,
name: "d_0",
mt: 650,
label: "(z,d0)",
doc: "(n,d0)",
},
Reaction {
id: 1187788,
name: "d_7",
mt: 657,
label: "(z,d7)",
doc: "(n,d7)",
},
Reaction {
id: 1187789,
name: "d_6",
mt: 656,
label: "(z,d6)",
doc: "(n,d6)",
},
Reaction {
id: 1187790,
name: "d_5",
mt: 655,
label: "(z,d5)",
doc: "(n,d5)",
},
Reaction {
id: 1187791,
name: "d_4",
mt: 654,
label: "(z,d4)",
doc: "(n,d4)",
},
Reaction {
id: 1190871,
name: "d2a",
mt: 114,
label: "(z,d2a)",
doc: "(z,d2a) Production of d and 2 alphas",
},
Reaction {
id: 1200086,
name: "p_9",
mt: 609,
label: "(z,p9)",
doc: "(n,p9)",
},
Reaction {
id: 1200087,
name: "p_8",
mt: 608,
label: "(z,p8)",
doc: "(n,p8)",
},
Reaction {
id: 1200088,
name: "p_7",
mt: 607,
label: "(z,p7)",
doc: "(n,p7)",
},
Reaction {
id: 1200089,
name: "p_6",
mt: 606,
label: "(z,p6)",
doc: "(n,p6)",
},
Reaction {
id: 1200090,
name: "p_5",
mt: 605,
label: "(z,p5)",
doc: "(n,p5)",
},
Reaction {
id: 1200091,
name: "p_4",
mt: 604,
label: "(z,p4)",
doc: "(n,p4)",
},
Reaction {
id: 1200092,
name: "p_3",
mt: 603,
label: "(z,p3)",
doc: "(n,p3)",
},
Reaction {
id: 1200093,
name: "p_2",
mt: 602,
label: "(z,p2)",
doc: "(n,p2)",
},
Reaction {
id: 1200094,
name: "p_1",
mt: 601,
label: "(z,p1)",
doc: "(n,p1)",
},
Reaction {
id: 1200095,
name: "p_0",
mt: 600,
label: "(z,p0)",
doc: "(n,p0)",
},
Reaction {
id: 1201596,
name: "n3a",
mt: 23,
label: "(z,n+3a)",
doc: "(z,n3a) Production of n and 3 alphas",
},
Reaction {
id: 1201612,
name: "n2p",
mt: 44,
label: "(z,n+2p)",
doc: "(z,n2p) Production of n and 2p",
},
Reaction {
id: 1201629,
name: "n2a",
mt: 29,
label: "(z,n+2a)",
doc: "(z,n2a) Production of n and 2 alphas",
},
Reaction {
id: 1202240,
name: "n_1",
mt: 51,
label: "(z,n1)",
doc: "(z,n1) Production of n, 1st excited state",
},
Reaction {
id: 1202241,
name: "n_0",
mt: 50,
label: "(z,n0)",
doc: "(z,n0) Production of n, ground state",
},
Reaction {
id: 1202242,
name: "n_3",
mt: 53,
label: "(z,n3)",
doc: "(z,n3) Production of n, 3rd excited state",
},
Reaction {
id: 1202243,
name: "n_2",
mt: 52,
label: "(z,n2)",
doc: "(z,n2) Production of n, 2nd excited state",
},
Reaction {
id: 1202244,
name: "n_5",
mt: 55,
label: "(z,n5)",
doc: "(z,n5) Production of n, 5th excited state",
},
Reaction {
id: 1202245,
name: "n_4",
mt: 54,
label: "(z,n4)",
doc: "(z,n4) Production of n, 4th excited state",
},
Reaction {
id: 1202246,
name: "n_7",
mt: 57,
label: "(z,n7)",
doc: "(z,n7) Production of n, 7th excited state",
},
Reaction {
id: 1202247,
name: "n_6",
mt: 56,
label: "(z,n6)",
doc: "(z,n6) Production of n, 6th excited state",
},
Reaction {
id: 1202248,
name: "n_9",
mt: 59,
label: "(z,n9)",
doc: "(z,n9) Production of n, 9th excited state",
},
Reaction {
id: 1202249,
name: "n_8",
mt: 58,
label: "(z,n8)",
doc: "(z,n8) Production of n, 8th excited state",
},
Reaction {
id: 1203802,
name: "npd",
mt: 0,
label: "(z,n+p+d)",
doc: "(z,npd) Production of n, p, and d",
},
Reaction {
id: 1203807,
name: "npa",
mt: 45,
label: "(z,npa)",
doc: "(z,npa) Production of n, p, and alpha",
},
Reaction {
id: 1204178,
name: "t_9",
mt: 709,
label: "(z,t9)",
doc: "(z,t9)",
},
Reaction {
id: 1204179,
name: "t_8",
mt: 708,
label: "(z,t8)",
doc: "(z,t8)",
},
Reaction {
id: 1204184,
name: "t_3",
mt: 703,
label: "(z,t3)",
doc: "(z,t3)",
},
Reaction {
id: 1204185,
name: "t_2",
mt: 702,
label: "(z,t2)",
doc: "(z,t2)",
},
Reaction {
id: 1204186,
name: "t_1",
mt: 701,
label: "(z,t1)",
doc: "(z,t1)",
},
Reaction {
id: 1204187,
name: "t_0",
mt: 700,
label: "(z,t0)",
doc: "(z,t0)",
},
Reaction {
id: 1204188,
name: "t_7",
mt: 707,
label: "(z,t7)",
doc: "(z,t7)",
},
Reaction {
id: 1204189,
name: "t_6",
mt: 706,
label: "(z,t6)",
doc: "(z,t6)",
},
Reaction {
id: 1204190,
name: "t_5",
mt: 705,
label: "(z,t5)",
doc: "(z,t5)",
},
Reaction {
id: 1204191,
name: "t_4",
mt: 704,
label: "(z,t4)",
doc: "(z,t4)",
},
Reaction {
id: 1207239,
name: "t2a",
mt: 113,
label: "(z,t2a)",
doc: "(z,t2a) Production of t and 2 alphas",
},
Reaction {
id: 1225374,
name: "He3",
mt: 106,
label: "(z,3He)",
doc: "(z,3He) Production of He-3",
},
Reaction {
id: 2972118,
name: "p6_photoelectric",
mt: 564,
label: "P6 (6f5/2) subshell",
doc: "P6 (6f5/2) subshell",
},
Reaction {
id: 7967635,
name: "p3_photoelectric",
mt: 561,
label: "P3 (6p3/2) subshell",
doc: "P3 (6p3/2) subshell",
},
Reaction {
id: 39095602,
name: "a_48",
mt: 848,
label: "(z,a48)",
doc: "(z,a48)",
},
Reaction {
id: 39095608,
name: "a_42",
mt: 842,
label: "(z,a42)",
doc: "(z,a42)",
},
Reaction {
id: 39095609,
name: "a_43",
mt: 843,
label: "(z,a43)",
doc: "(z,a43)",
},
Reaction {
id: 39095610,
name: "a_40",
mt: 840,
label: "(z,a40)",
doc: "(z,a40)",
},
Reaction {
id: 39095611,
name: "a_41",
mt: 841,
label: "(z,a41)",
doc: "(z,a41)",
},
Reaction {
id: 39095612,
name: "a_46",
mt: 846,
label: "(z,a46)",
doc: "(z,a46)",
},
Reaction {
id: 39095613,
name: "a_47",
mt: 847,
label: "(z,a47)",
doc: "(z,a47)",
},
Reaction {
id: 39095614,
name: "a_44",
mt: 844,
label: "(z,a44)",
doc: "(z,a44)",
},
Reaction {
id: 39095615,
name: "a_45",
mt: 845,
label: "(z,a45)",
doc: "(z,a45)",
},
Reaction {
id: 39095636,
name: "a_39",
mt: 839,
label: "(z,a39)",
doc: "(z,a39)",
},
Reaction {
id: 39095637,
name: "a_38",
mt: 838,
label: "(z,a38)",
doc: "(z,a38)",
},
Reaction {
id: 39095640,
name: "a_35",
mt: 835,
label: "(z,a35)",
doc: "(z,a35)",
},
Reaction {
id: 39095641,
name: "a_34",
mt: 834,
label: "(z,a34)",
doc: "(z,a34)",
},
Reaction {
id: 39095642,
name: "a_37",
mt: 837,
label: "(z,a37)",
doc: "(z,a37)",
},
Reaction {
id: 39095643,
name: "a_36",
mt: 836,
label: "(z,a36)",
doc: "(z,a36)",
},
Reaction {
id: 39095644,
name: "a_31",
mt: 831,
label: "(z,a31)",
doc: "(z,a31)",
},
Reaction {
id: 39095645,
name: "a_30",
mt: 830,
label: "(z,a30)",
doc: "(z,a30)",
},
Reaction {
id: 39095646,
name: "a_33",
mt: 833,
label: "(z,a33)",
doc: "(z,a33)",
},
Reaction {
id: 39095647,
name: "a_32",
mt: 832,
label: "(z,a32)",
doc: "(z,a32)",
},
Reaction {
id: 39095668,
name: "a_28",
mt: 828,
label: "(z,a28)",
doc: "(z,a28)",
},
Reaction {
id: 39095669,
name: "a_29",
mt: 829,
label: "(z,a29)",
doc: "(z,a29)",
},
Reaction {
id: 39095672,
name: "a_24",
mt: 824,
label: "(z,a24)",
doc: "(z,a24)",
},
Reaction {
id: 39095673,
name: "a_25",
mt: 825,
label: "(z,a25)",
doc: "(z,a25)",
},
Reaction {
id: 39095674,
name: "a_26",
mt: 826,
label: "(z,a26)",
doc: "(z,a26)",
},
Reaction {
id: 39095675,
name: "a_27",
mt: 827,
label: "(z,a27)",
doc: "(z,a27)",
},
Reaction {
id: 39095676,
name: "a_20",
mt: 820,
label: "(z,a20)",
doc: "(z,a20)",
},
Reaction {
id: 39095677,
name: "a_21",
mt: 821,
label: "(z,a21)",
doc: "(z,a21)",
},
Reaction {
id: 39095678,
name: "a_22",
mt: 822,
label: "(z,a22)",
doc: "(z,a22)",
},
Reaction {
id: 39095679,
name: "a_23",
mt: 823,
label: "(z,a23)",
doc: "(z,a23)",
},
Reaction {
id: 39095702,
name: "a_19",
mt: 819,
label: "(z,a19)",
doc: "(z,a19)",
},
Reaction {
id: 39095703,
name: "a_18",
mt: 818,
label: "(z,a18)",
doc: "(z,a18)",
},
Reaction {
id: 39095704,
name: "a_17",
mt: 817,
label: "(z,a17)",
doc: "(z,a17)",
},
Reaction {
id: 39095705,
name: "a_16",
mt: 816,
label: "(z,a16)",
doc: "(z,a16)",
},
Reaction {
id: 39095706,
name: "a_15",
mt: 815,
label: "(z,a15)",
doc: "(z,a15)",
},
Reaction {
id: 39095707,
name: "a_14",
mt: 814,
label: "(z,a14)",
doc: "(z,a14)",
},
Reaction {
id: 39095708,
name: "a_13",
mt: 813,
label: "(z,a13)",
doc: "(z,a13)",
},
Reaction {
id: 39095709,
name: "a_12",
mt: 812,
label: "(z,a12)",
doc: "(z,a12)",
},
Reaction {
id: 39095710,
name: "a_11",
mt: 811,
label: "(z,a11)",
doc: "(z,a11)",
},
Reaction {
id: 39095711,
name: "a_10",
mt: 810,
label: "(z,a10)",
doc: "(z,a10)",
},
Reaction {
id: 39196880,
name: "d_29",
mt: 679,
label: "(z,d29)",
doc: "(n,d29)",
},
Reaction {
id: 39196881,
name: "d_28",
mt: 678,
label: "(z,d28)",
doc: "(n,d28)",
},
Reaction {
id: 39196888,
name: "d_21",
mt: 671,
label: "(z,d21)",
doc: "(n,d21)",
},
Reaction {
id: 39196889,
name: "d_20",
mt: 670,
label: "(z,d20)",
doc: "(n,d20)",
},
Reaction {
id: 39196890,
name: "d_23",
mt: 673,
label: "(z,d23)",
doc: "(n,d23)",
},
Reaction {
id: 39196891,
name: "d_22",
mt: 672,
label: "(z,d22)",
doc: "(n,d22)",
},
Reaction {
id: 39196892,
name: "d_25",
mt: 675,
label: "(z,d25)",
doc: "(n,d25)",
},
Reaction {
id: 39196893,
name: "d_24",
mt: 674,
label: "(z,d24)",
doc: "(n,d24)",
},
Reaction {
id: 39196894,
name: "d_27",
mt: 677,
label: "(z,d27)",
doc: "(n,d27)",
},
Reaction {
id: 39196895,
name: "d_26",
mt: 676,
label: "(z,d26)",
doc: "(n,d26)",
},
Reaction {
id: 39196912,
name: "d_38",
mt: 688,
label: "(z,d38)",
doc: "(n,d38)",
},
Reaction {
id: 39196913,
name: "d_39",
mt: 689,
label: "(z,d39)",
doc: "(n,d39)",
},
Reaction {
id: 39196920,
name: "d_30",
mt: 680,
label: "(z,d30)",
doc: "(n,d30)",
},
Reaction {
id: 39196921,
name: "d_31",
mt: 681,
label: "(z,d31)",
doc: "(n,d31)",
},
Reaction {
id: 39196922,
name: "d_32",
mt: 682,
label: "(z,d32)",
doc: "(n,d32)",
},
Reaction {
id: 39196923,
name: "d_33",
mt: 683,
label: "(z,d33)",
doc: "(n,d33)",
},
Reaction {
id: 39196924,
name: "d_34",
mt: 684,
label: "(z,d34)",
doc: "(n,d34)",
},
Reaction {
id: 39196925,
name: "d_35",
mt: 685,
label: "(z,d35)",
doc: "(n,d35)",
},
Reaction {
id: 39196926,
name: "d_36",
mt: 686,
label: "(z,d36)",
doc: "(n,d36)",
},
Reaction {
id: 39196927,
name: "d_37",
mt: 687,
label: "(z,d37)",
doc: "(n,d37)",
},
Reaction {
id: 39196978,
name: "d_18",
mt: 668,
label: "(z,d18)",
doc: "(n,d18)",
},
Reaction {
id: 39196979,
name: "d_19",
mt: 669,
label: "(z,d19)",
doc: "(n,d19)",
},
Reaction {
id: 39196984,
name: "d_12",
mt: 662,
label: "(z,d12)",
doc: "(n,d12)",
},
Reaction {
id: 39196985,
name: "d_13",
mt: 663,
label: "(z,d13)",
doc: "(n,d13)",
},
Reaction {
id: 39196986,
name: "d_10",
mt: 660,
label: "(z,d10)",
doc: "(n,d10)",
},
Reaction {
id: 39196987,
name: "d_11",
mt: 661,
label: "(z,d11)",
doc: "(n,d11)",
},
Reaction {
id: 39196988,
name: "d_16",
mt: 666,
label: "(z,d16)",
doc: "(n,d16)",
},
Reaction {
id: 39196989,
name: "d_17",
mt: 667,
label: "(z,d17)",
doc: "(n,d17)",
},
Reaction {
id: 39196990,
name: "d_14",
mt: 664,
label: "(z,d14)",
doc: "(n,d14)",
},
Reaction {
id: 39196991,
name: "d_15",
mt: 665,
label: "(z,d15)",
doc: "(n,d15)",
},
Reaction {
id: 39197079,
name: "d_48",
mt: 698,
label: "(z,d48)",
doc: "(n,d48)",
},
Reaction {
id: 39197080,
name: "d_47",
mt: 697,
label: "(z,d47)",
doc: "(n,d47)",
},
Reaction {
id: 39197081,
name: "d_46",
mt: 696,
label: "(z,d46)",
doc: "(n,d46)",
},
Reaction {
id: 39197082,
name: "d_45",
mt: 695,
label: "(z,d45)",
doc: "(n,d45)",
},
Reaction {
id: 39197083,
name: "d_44",
mt: 694,
label: "(z,d44)",
doc: "(n,d44)",
},
Reaction {
id: 39197084,
name: "d_43",
mt: 693,
label: "(z,d43)",
doc: "(n,d43)",
},
Reaction {
id: 39197085,
name: "d_42",
mt: 692,
label: "(z,d42)",
doc: "(n,d42)",
},
Reaction {
id: 39197086,
name: "d_41",
mt: 691,
label: "(z,d41)",
doc: "(n,d41)",
},
Reaction {
id: 39197087,
name: "d_40",
mt: 690,
label: "(z,d40)",
doc: "(n,d40)",
},
Reaction {
id: 39456052,
name: "misc",
mt: 5,
label: "(misc)",
doc: "(z,anything) Miscellaneous",
},
Reaction {
id: 39602947,
name: "p_48",
mt: 648,
label: "(z,p48)",
doc: "(n,p48)",
},
Reaction {
id: 39602952,
name: "p_43",
mt: 643,
label: "(z,p43)",
doc: "(n,p43)",
},
Reaction {
id: 39602953,
name: "p_42",
mt: 642,
label: "(z,p42)",
doc: "(n,p42)",
},
Reaction {
id: 39602954,
name: "p_41",
mt: 641,
label: "(z,p41)",
doc: "(n,p41)",
},
Reaction {
id: 39602955,
name: "p_40",
mt: 640,
label: "(z,p40)",
doc: "(n,p40)",
},
Reaction {
id: 39602956,
name: "p_47",
mt: 647,
label: "(z,p47)",
doc: "(n,p47)",
},
Reaction {
id: 39602957,
name: "p_46",
mt: 646,
label: "(z,p46)",
doc: "(n,p46)",
},
Reaction {
id: 39602958,
name: "p_45",
mt: 645,
label: "(z,p45)",
doc: "(n,p45)",
},
Reaction {
id: 39602959,
name: "p_44",
mt: 644,
label: "(z,p44)",
doc: "(n,p44)",
},
Reaction {
id: 39603012,
name: "p_29",
mt: 629,
label: "(z,p29)",
doc: "(n,p29)",
},
Reaction {
id: 39603013,
name: "p_28",
mt: 628,
label: "(z,p28)",
doc: "(n,p28)",
},
Reaction {
id: 39603016,
name: "p_25",
mt: 625,
label: "(z,p25)",
doc: "(n,p25)",
},
Reaction {
id: 39603017,
name: "p_24",
mt: 624,
label: "(z,p24)",
doc: "(n,p24)",
},
Reaction {
id: 39603018,
name: "p_27",
mt: 627,
label: "(z,p27)",
doc: "(n,p27)",
},
Reaction {
id: 39603019,
name: "p_26",
mt: 626,
label: "(z,p26)",
doc: "(n,p26)",
},
Reaction {
id: 39603020,
name: "p_21",
mt: 621,
label: "(z,p21)",
doc: "(n,p21)",
},
Reaction {
id: 39603021,
name: "p_20",
mt: 620,
label: "(z,p20)",
doc: "(n,p20)",
},
Reaction {
id: 39603022,
name: "p_23",
mt: 623,
label: "(z,p23)",
doc: "(n,p23)",
},
Reaction {
id: 39603023,
name: "p_22",
mt: 622,
label: "(z,p22)",
doc: "(n,p22)",
},
Reaction {
id: 39603044,
name: "p_38",
mt: 638,
label: "(z,p38)",
doc: "(n,p38)",
},
Reaction {
id: 39603045,
name: "p_39",
mt: 639,
label: "(z,p39)",
doc: "(n,p39)",
},
Reaction {
id: 39603048,
name: "p_34",
mt: 634,
label: "(z,p34)",
doc: "(n,p34)",
},
Reaction {
id: 39603049,
name: "p_35",
mt: 635,
label: "(z,p35)",
doc: "(n,p35)",
},
Reaction {
id: 39603050,
name: "p_36",
mt: 636,
label: "(z,p36)",
doc: "(n,p36)",
},
Reaction {
id: 39603051,
name: "p_37",
mt: 637,
label: "(z,p37)",
doc: "(n,p37)",
},
Reaction {
id: 39603052,
name: "p_30",
mt: 630,
label: "(z,p30)",
doc: "(n,p30)",
},
Reaction {
id: 39603053,
name: "p_31",
mt: 631,
label: "(z,p31)",
doc: "(n,p31)",
},
Reaction {
id: 39603054,
name: "p_32",
mt: 632,
label: "(z,p32)",
doc: "(n,p32)",
},
Reaction {
id: 39603055,
name: "p_33",
mt: 633,
label: "(z,p33)",
doc: "(n,p33)",
},
Reaction {
id: 39603110,
name: "p_18",
mt: 618,
label: "(z,p18)",
doc: "(n,p18)",
},
Reaction {
id: 39603111,
name: "p_19",
mt: 619,
label: "(z,p19)",
doc: "(n,p19)",
},
Reaction {
id: 39603112,
name: "p_16",
mt: 616,
label: "(z,p16)",
doc: "(n,p16)",
},
Reaction {
id: 39603113,
name: "p_17",
mt: 617,
label: "(z,p17)",
doc: "(n,p17)",
},
Reaction {
id: 39603114,
name: "p_14",
mt: 614,
label: "(z,p14)",
doc: "(n,p14)",
},
Reaction {
id: 39603115,
name: "p_15",
mt: 615,
label: "(z,p15)",
doc: "(n,p15)",
},
Reaction {
id: 39603116,
name: "p_12",
mt: 612,
label: "(z,p12)",
doc: "(n,p12)",
},
Reaction {
id: 39603117,
name: "p_13",
mt: 613,
label: "(z,p13)",
doc: "(n,p13)",
},
Reaction {
id: 39603118,
name: "p_10",
mt: 610,
label: "(z,p10)",
doc: "(n,p10)",
},
Reaction {
id: 39603119,
name: "p_11",
mt: 611,
label: "(z,p11)",
doc: "(n,p11)",
},
Reaction {
id: 39666672,
name: "nHe3",
mt: 34,
label: "(z,n+He3)",
doc: "(z,n3He) Production of n and He-3",
},
Reaction {
id: 39673968,
name: "n_10",
mt: 60,
label: "(z,n10)",
doc: "(z,n10) Production of n, 10th excited state",
},
Reaction {
id: 39673969,
name: "n_11",
mt: 61,
label: "(z,n11)",
doc: "(z,n11) Production of n, 11th excited state",
},
Reaction {
id: 39673970,
name: "n_12",
mt: 62,
label: "(z,n12)",
doc: "(z,n12) Production of n, 12th excited state",
},
Reaction {
id: 39673971,
name: "n_13",
mt: 63,
label: "(z,n13)",
doc: "(z,n13) Production of n, 13th excited state",
},
Reaction {
id: 39673972,
name: "n_14",
mt: 64,
label: "(z,n14)",
doc: "(z,n14) Production of n, 14th excited state",
},
Reaction {
id: 39673973,
name: "n_15",
mt: 65,
label: "(z,n15)",
doc: "(z,n15) Production of n, 15th excited state",
},
Reaction {
id: 39673974,
name: "n_16",
mt: 66,
label: "(z,n16)",
doc: "(z,n16) Production of n, 16th excited state",
},
Reaction {
id: 39673975,
name: "n_17",
mt: 67,
label: "(z,n17)",
doc: "(z,n17) Production of n, 17th excited state",
},
Reaction {
id: 39673976,
name: "n_18",
mt: 68,
label: "(z,n18)",
doc: "(z,n18) Production of n, 18th excited state",
},
Reaction {
id: 39673977,
name: "n_19",
mt: 69,
label: "(z,n19)",
doc: "(z,n19) Production of n, 19th excited state",
},
Reaction {
id: 39674000,
name: "n_23",
mt: 73,
label: "(z,n23)",
doc: "(z,n23) Production of n, 23rd excited state",
},
Reaction {
id: 39674001,
name: "n_22",
mt: 72,
label: "(z,n22)",
doc: "(z,n22) Production of n, 22nd excited state",
},
Reaction {
id: 39674002,
name: "n_21",
mt: 71,
label: "(z,n21)",
doc: "(z,n21) Production of n, 21st excited state",
},
Reaction {
id: 39674003,
name: "n_20",
mt: 70,
label: "(z,n20)",
doc: "(z,n20) Production of n, 20th excited state",
},
Reaction {
id: 39674004,
name: "n_27",
mt: 77,
label: "(z,n27)",
doc: "(z,n27) Production of n, 27th excited state",
},
Reaction {
id: 39674005,
name: "n_26",
mt: 76,
label: "(z,n26)",
doc: "(z,n26) Production of n, 26th excited state",
},
Reaction {
id: 39674006,
name: "n_25",
mt: 75,
label: "(z,n25)",
doc: "(z,n25) Production of n, 25th excited state",
},
Reaction {
id: 39674007,
name: "n_24",
mt: 74,
label: "(z,n24)",
doc: "(z,n24) Production of n, 24th excited state",
},
Reaction {
id: 39674010,
name: "n_29",
mt: 79,
label: "(z,n29)",
doc: "(z,n29) Production of n, 29th excited state",
},
Reaction {
id: 39674011,
name: "n_28",
mt: 78,
label: "(z,n28)",
doc: "(z,n28) Production of n, 28th excited state",
},
Reaction {
id: 39674032,
name: "n_32",
mt: 82,
label: "(z,n32)",
doc: "(z,n32) Production of n, 32nd excited state",
},
Reaction {
id: 39674033,
name: "n_33",
mt: 83,
label: "(z,n33)",
doc: "(z,n33) Production of n, 33rd excited state",
},
Reaction {
id: 39674034,
name: "n_30",
mt: 80,
label: "(z,n30)",
doc: "(z,n30) Production of n, 30th excited state",
},
Reaction {
id: 39674035,
name: "n_31",
mt: 81,
label: "(z,n31)",
doc: "(z,n31) Production of n, 31st excited state",
},
Reaction {
id: 39674036,
name: "n_36",
mt: 86,
label: "(z,n36)",
doc: "(z,n36) Production of n, 36th excited state",
},
Reaction {
id: 39674037,
name: "n_37",
mt: 87,
label: "(z,n37)",
doc: "(z,n37) Production of n, 37th excited state",
},
Reaction {
id: 39674038,
name: "n_34",
mt: 84,
label: "(z,n34)",
doc: "(z,n34) Production of n, 34th excited state",
},
Reaction {
id: 39674039,
name: "n_35",
mt: 85,
label: "(z,n35)",
doc: "(z,n35) Production of n, 35th excited state",
},
Reaction {
id: 39674042,
name: "n_38",
mt: 88,
label: "(z,n38)",
doc: "(z,n38) Production of n, 38th excited state",
},
Reaction {
id: 39674043,
name: "n_39",
mt: 89,
label: "(z,n39)",
doc: "(z,n39) Production of n, 39th excited state",
},
Reaction {
id: 39674069,
name: "n_40",
mt: 90,
label: "(z,n40)",
doc: "(z,n40) Production of n, 40th excited state",
},
Reaction {
id: 39702232,
name: "nd3a",
mt: 35,
label: "(z,n+d+3a)",
doc: "(z,nd2a) Production of n, d, and alpha",
},
Reaction {
id: 39705252,
name: "nd_1",
mt: 0,
label: "(z,nd1)",
doc: "(z,nd1) Production of n and d, 1st excited state",
},
Reaction {
id: 39705253,
name: "nd_0",
mt: 0,
label: "(z,nd0)",
doc: "(z,nd0) Production of n and d, ground state",
},
Reaction {
id: 39705255,
name: "nd_2",
mt: 0,
label: "(z,nd2)",
doc: "(z,nd2) Production of n and d, 2nd excited state",
},
Reaction {
id: 39706144,
name: "na_0",
mt: 0,
label: "(z,n+a0)",
doc: "(z,na0) Production of n and alpha, ground state",
},
Reaction {
id: 39706145,
name: "na_1",
mt: 0,
label: "(z,n+a1)",
doc: "(z,na1) Production of n and alpha, 1st excited state",
},
Reaction {
id: 39706146,
name: "na_2",
mt: 0,
label: "(z,n+a2)",
doc: "(z,na2) Production of n and alpha, 2nd excited state",
},
Reaction {
id: 39718633,
name: "nt2a",
mt: 36,
label: "(z,n+t+2a)",
doc: "(z,nt2a) Production of n, t, and 2 alphas",
},
Reaction {
id: 39721652,
name: "nt_1",
mt: 0,
label: "(z,nt1)",
doc: "(z,nt1) Production of n and t, 1st excited state",
},
Reaction {
id: 39721653,
name: "nt_0",
mt: 0,
label: "(z,nt0)",
doc: "(z,nt0) Production of n and t, ground state",
},
Reaction {
id: 39721655,
name: "nt_2",
mt: 0,
label: "(z,nt2)",
doc: "(z,nt2) Production of n and t, 2nd excited state",
},
Reaction {
id: 39725744,
name: "np_1",
mt: 0,
label: "(z,n+p1)",
doc: "(z,np1) Production of n and p, 1st excited state",
},
Reaction {
id: 39725745,
name: "np_0",
mt: 0,
label: "(z,n+p0)",
doc: "(z,np0) Production of n and p, ground state",
},
Reaction {
id: 39725747,
name: "np_2",
mt: 0,
label: "(z,n+p2)",
doc: "(z,np2) Production of n and p, 2nd excited state",
},
Reaction {
id: 39738048,
name: "t_29",
mt: 729,
label: "(z,t29)",
doc: "(z,t29)",
},
Reaction {
id: 39738049,
name: "t_28",
mt: 728,
label: "(z,t28)",
doc: "(z,t28)",
},
Reaction {
id: 39738056,
name: "t_21",
mt: 721,
label: "(z,t21)",
doc: "(z,t21)",
},
Reaction {
id: 39738057,
name: "t_20",
mt: 720,
label: "(z,t20)",
doc: "(z,t20)",
},
Reaction {
id: 39738058,
name: "t_23",
mt: 723,
label: "(z,t23)",
doc: "(z,t23)",
},
Reaction {
id: 39738059,
name: "t_22",
mt: 722,
label: "(z,t22)",
doc: "(z,t22)",
},
Reaction {
id: 39738060,
name: "t_25",
mt: 725,
label: "(z,t25)",
doc: "(z,t25)",
},
Reaction {
id: 39738061,
name: "t_24",
mt: 724,
label: "(z,t24)",
doc: "(z,t24)",
},
Reaction {
id: 39738062,
name: "t_27",
mt: 727,
label: "(z,t27)",
doc: "(z,t27)",
},
Reaction {
id: 39738063,
name: "t_26",
mt: 726,
label: "(z,t26)",
doc: "(z,t26)",
},
Reaction {
id: 39738080,
name: "t_38",
mt: 738,
label: "(z,t38)",
doc: "(z,t38)",
},
Reaction {
id: 39738081,
name: "t_39",
mt: 739,
label: "(z,t39)",
doc: "(z,t39)",
},
Reaction {
id: 39738088,
name: "t_30",
mt: 730,
label: "(z,t30)",
doc: "(z,t30)",
},
Reaction {
id: 39738089,
name: "t_31",
mt: 731,
label: "(z,t31)",
doc: "(z,t31)",
},
Reaction {
id: 39738090,
name: "t_32",
mt: 732,
label: "(z,t32)",
doc: "(z,t32)",
},
Reaction {
id: 39738091,
name: "t_33",
mt: 733,
label: "(z,t33)",
doc: "(z,t33)",
},
Reaction {
id: 39738092,
name: "t_34",
mt: 734,
label: "(z,t34)",
doc: "(z,t34)",
},
Reaction {
id: 39738093,
name: "t_35",
mt: 735,
label: "(z,t35)",
doc: "(z,t35)",
},
Reaction {
id: 39738094,
name: "t_36",
mt: 736,
label: "(z,t36)",
doc: "(z,t36)",
},
Reaction {
id: 39738095,
name: "t_37",
mt: 737,
label: "(z,t37)",
doc: "(z,t37)",
},
Reaction {
id: 39738146,
name: "t_18",
mt: 718,
label: "(z,t18)",
doc: "(z,t18)",
},
Reaction {
id: 39738147,
name: "t_19",
mt: 719,
label: "(z,t19)",
doc: "(z,t19)",
},
Reaction {
id: 39738152,
name: "t_12",
mt: 712,
label: "(z,t12)",
doc: "(z,t12)",
},
Reaction {
id: 39738153,
name: "t_13",
mt: 713,
label: "(z,t13)",
doc: "(z,t13)",
},
Reaction {
id: 39738154,
name: "t_10",
mt: 710,
label: "(z,t10)",
doc: "(z,t10)",
},
Reaction {
id: 39738155,
name: "t_11",
mt: 711,
label: "(z,t11)",
doc: "(z,t11)",
},
Reaction {
id: 39738156,
name: "t_16",
mt: 716,
label: "(z,t16)",
doc: "(z,t16)",
},
Reaction {
id: 39738157,
name: "t_17",
mt: 717,
label: "(z,t17)",
doc: "(z,t17)",
},
Reaction {
id: 39738158,
name: "t_14",
mt: 714,
label: "(z,t14)",
doc: "(z,t14)",
},
Reaction {
id: 39738159,
name: "t_15",
mt: 715,
label: "(z,t15)",
doc: "(z,t15)",
},
Reaction {
id: 39738247,
name: "t_48",
mt: 748,
label: "(z,t48)",
doc: "(z,t48)",
},
Reaction {
id: 39738248,
name: "t_47",
mt: 747,
label: "(z,t47)",
doc: "(z,t47)",
},
Reaction {
id: 39738249,
name: "t_46",
mt: 746,
label: "(z,t46)",
doc: "(z,t46)",
},
Reaction {
id: 39738250,
name: "t_45",
mt: 745,
label: "(z,t45)",
doc: "(z,t45)",
},
Reaction {
id: 39738251,
name: "t_44",
mt: 744,
label: "(z,t44)",
doc: "(z,t44)",
},
Reaction {
id: 39738252,
name: "t_43",
mt: 743,
label: "(z,t43)",
doc: "(z,t43)",
},
Reaction {
id: 39738253,
name: "t_42",
mt: 742,
label: "(z,t42)",
doc: "(z,t42)",
},
Reaction {
id: 39738254,
name: "t_41",
mt: 741,
label: "(z,t41)",
doc: "(z,t41)",
},
Reaction {
id: 39738255,
name: "t_40",
mt: 740,
label: "(z,t40)",
doc: "(z,t40)",
},
Reaction {
id: 40079903,
name: "z_4n",
mt: 37,
label: "(z,4n)",
doc: "(z,4n) Production of 4n",
},
Reaction {
id: 40080199,
name: "z_2p",
mt: 111,
label: "(z,2p)",
doc: "(z,2p) Production of 2p",
},
Reaction {
id: 40080214,
name: "z_2a",
mt: 108,
label: "(z,2a)",
doc: "(z,2a) Production of 2 alphas",
},
Reaction {
id: 40080217,
name: "z_2n",
mt: 16,
label: "(z,2n)",
doc: "(z,2n) Production of 2n",
},
Reaction {
id: 40080247,
name: "z_3a",
mt: 109,
label: "(z,3a)",
doc: "(z,3a) Production of 3 alphas",
},
Reaction {
id: 40080248,
name: "z_3n",
mt: 17,
label: "(z,3n)",
doc: "(z,3n) Production of 3n",
},
Reaction {
id: 49749186,
name: "excited",
mt: 0,
label: "Any Excited State",
doc: "production of any excited state nucleus",
},
Reaction {
id: 50137459,
name: "lumped_covar",
mt: 851,
label: "Lumped Covariances",
doc: "Lumped-Reaction Covariances",
},
Reaction {
id: 83920519,
name: "bremsstrahlung",
mt: 527,
label: "Electro-atomic bremsstrahlung",
doc: "Electro-atomic bremsstrahlung",
},
Reaction {
id: 164738820,
name: "bplus_3p",
mt: 0,
label: "(z,b+3p)",
doc: "(z,b+3p)",
},
Reaction {
id: 164739045,
name: "bplus_2p",
mt: 0,
label: "(z,b+2p)",
doc: "(z,b+2p)",
},
Reaction {
id: 247330749,
name: "nHe3_2",
mt: 0,
label: "(z,n+He3-2)",
doc: "(z,n3He-2) Production of n and He-3, 2nd excited state",
},
Reaction {
id: 247330750,
name: "nHe3_1",
mt: 0,
label: "(z,n+He3-1)",
doc: "(z,n3He-1) Production of n and He-3, 1st excited state",
},
Reaction {
id: 247330751,
name: "nHe3_0",
mt: 0,
label: "(z,n+He3-0)",
doc: "(z,n3He-0) Production of n and He-3, ground state",
},
Reaction {
id: 292194604,
name: "erel_n_continuum",
mt: 391,
label: "Energy Release from (z,nc)",
doc: "Energy Release from (z,nc) Production of n in continuum",
},
Reaction {
id: 320951906,
name: "scattering_electroatomic",
mt: 526,
label: "Electro-atomic scattering",
doc: "Electro-atomic scattering",
},
Reaction {
id: 362248330,
name: "n4_photoelectric",
mt: 546,
label: "N4 (4d3/2) subshell",
doc: "N4 (4d3/2) subshell",
},
Reaction {
id: 445654364,
name: "a_total",
mt: 207,
label: "(z,Xa)",
doc: "(z,Xa) Total alpha production",
},
Reaction {
id: 451711281,
name: "nubar_prompt",
mt: 456,
label: "Prompt Neutrons per Fission",
doc: "Prompt Neutrons per Fission",
},
Reaction {
id: 544523942,
name: "o9_photoelectric",
mt: 558,
label: "O9 (5g9/2) subshell",
doc: "O9 (5g9/2) subshell",
},
Reaction {
id: 581574421,
name: "p5_photoelectric",
mt: 563,
label: "P5 (6d5/2) subshell",
doc: "P5 (6d5/2) subshell",
},
Reaction {
id: 595278387,
name: "q2_photoelectric",
mt: 571,
label: "Q2 (7p1/2) subshell",
doc: "Q2 (7p1/2) subshell",
},
Reaction {
id: 601219438,
name: "m3_photoelectric",
mt: 540,
label: "M3 (3p3/2) subshell",
doc: "M3 (3p3/2) subshell",
},
Reaction {
id: 602788105,
name: "erel_fission_second",
mt: 320,
label: "Energy Release from (z,nf)",
doc: "Energy Release from (z,nf) Second chance fission",
},
Reaction {
id: 603290173,
name: "erel_continuum",
mt: 310,
label: "Energy Release from (z,continuum)",
doc: "Energy Release from (z,contin) Total continuum reaction",
},
Reaction {
id: 609297536,
name: "p11_photoelectric",
mt: 569,
label: "P11 (6h11/2) subshell",
doc: "P11 (6h11/2) subshell",
},
Reaction {
id: 636464424,
name: "o7_photoelectric",
mt: 556,
label: "O7 (5f7/2) subshell",
doc: "O7 (5f7/2) subshell",
},
Reaction {
id: 650311916,
name: "m1_photoelectric",
mt: 538,
label: "M1 (3s1/2) subshell",
doc: "M1 (3s1/2) subshell",
},
Reaction {
id: 697338256,
name: "z_4n_0",
mt: 0,
label: "(z,4n0)",
doc: "(z,4n0) Production of 4n, ground state",
},
Reaction {
id: 697338257,
name: "z_4n_1",
mt: 0,
label: "(z,4n1)",
doc: "(z,4n1) Production of 4n, 1st excited state",
},
Reaction {
id: 697666376,
name: "z_2p_0",
mt: 0,
label: "(z,2p0)",
doc: "(z,2p0) Production of 2p, ground state",
},
Reaction {
id: 697666377,
name: "z_2p_1",
mt: 0,
label: "(z,2p1)",
doc: "(z,2p1) Production of 2p, 1st excited state",
},
Reaction {
id: 697666378,
name: "z_2p_2",
mt: 0,
label: "(z,2p2)",
doc: "(z,2p2) Production of 2p, 2nd excited state",
},
Reaction {
id: 697680596,
name: "z_2n_2",
mt: 0,
label: "(z,2n2)",
doc: "(z,2n2) Production of 2n, 2nd excited state",
},
Reaction {
id: 697680598,
name: "z_2n_0",
mt: 0,
label: "(z,2n0)",
doc: "(z,2n0) Production of 2n, ground state",
},
Reaction {
id: 697680599,
name: "z_2n_1",
mt: 0,
label: "(z,2n1)",
doc: "(z,2n1) Production of 2n, 1st excited state",
},
Reaction {
id: 697681866,
name: "z_2n2a",
mt: 30,
label: "(z,2n+2a)",
doc: "(z,2n2a) Production of 2n and 2 alphas",
},
Reaction {
id: 697714485,
name: "z_3n_2",
mt: 0,
label: "(z,3n2)",
doc: "(z,3n2) Production of 3n, 2nd excited state",
},
Reaction {
id: 697714486,
name: "z_3n_1",
mt: 0,
label: "(z,3n1)",
doc: "(z,3n1) Production of 3n, 1st excited state",
},
Reaction {
id: 697714487,
name: "z_3n_0",
mt: 0,
label: "(z,3n0)",
doc: "(z,3n0) Production of 3n, ground state",
},
Reaction {
id: 726388046,
name: "l2_photoelectric",
mt: 536,
label: "L2 (2p1/2) subshell",
doc: "L2 (2p1/2) subshell",
},
Reaction {
id: 886604009,
name: "resonance_parameters",
mt: 151,
label: "Resonance Parameters",
doc: "Resonance Parameters",
},
Reaction {
id: 935855116,
name: "n2_photoelectric",
mt: 544,
label: "N2 (4p1/2) subshell",
doc: "N2 (4p1/2) subshell",
},
Reaction {
id: 952919734,
name: "kaon0_short",
mt: 215,
label: "(z,Xk0short) Total short-lived neutral kaon production",
doc: "(z,Xk0short) Total short-lived neutral kaon production",
},
Reaction {
id: 974572603,
name: "k_photoelectric",
mt: 534,
label: "K (1s1/2) subshell",
doc: "K (1s1/2) subshell",
},
Reaction {
id: 991149144,
name: "p8_photoelectric",
mt: 566,
label: "P8 (6g7/2) subshell",
doc: "P8 (6g7/2) subshell",
},
Reaction {
id: 1037532617,
name: "n7_photoelectric",
mt: 549,
label: "N7 (4f7/2) subshell",
doc: "N7 (4f7/2) subshell",
},
Reaction {
id: 1086490656,
name: "He3_10",
mt: 760,
label: "(z,3He10)",
doc: "(n,3He10)",
},
Reaction {
id: 1086490657,
name: "He3_11",
mt: 761,
label: "(z,3He11)",
doc: "(n,3He11)",
},
Reaction {
id: 1086490658,
name: "He3_12",
mt: 762,
label: "(z,3He12)",
doc: "(n,3He12)",
},
Reaction {
id: 1086490659,
name: "He3_13",
mt: 763,
label: "(z,3He13)",
doc: "(n,3He13)",
},
Reaction {
id: 1086490660,
name: "He3_14",
mt: 764,
label: "(z,3He14)",
doc: "(n,3He14)",
},
Reaction {
id: 1086490661,
name: "He3_15",
mt: 765,
label: "(z,3He15)",
doc: "(n,3He15)",
},
Reaction {
id: 1086490662,
name: "He3_16",
mt: 766,
label: "(z,3He16)",
doc: "(n,3He16)",
},
Reaction {
id: 1086490663,
name: "He3_17",
mt: 767,
label: "(z,3He17)",
doc: "(n,3He17)",
},
Reaction {
id: 1086490664,
name: "He3_18",
mt: 768,
label: "(z,3He18)",
doc: "(n,3He18)",
},
Reaction {
id: 1086490665,
name: "He3_19",
mt: 769,
label: "(z,3He19)",
doc: "(n,3He19)",
},
Reaction {
id: 1086490688,
name: "He3_23",
mt: 773,
label: "(z,3He23)",
doc: "(n,3He23)",
},
Reaction {
id: 1086490689,
name: "He3_22",
mt: 772,
label: "(z,3He22)",
doc: "(n,3He22)",
},
Reaction {
id: 1086490690,
name: "He3_21",
mt: 771,
label: "(z,3He21)",
doc: "(n,3He21)",
},
Reaction {
id: 1086490691,
name: "He3_20",
mt: 770,
label: "(z,3He20)",
doc: "(n,3He20)",
},
Reaction {
id: 1086490692,
name: "He3_27",
mt: 777,
label: "(z,3He27)",
doc: "(n,3He27)",
},
Reaction {
id: 1086490693,
name: "He3_26",
mt: 776,
label: "(z,3He26)",
doc: "(n,3He26)",
},
Reaction {
id: 1086490694,
name: "He3_25",
mt: 775,
label: "(z,3He25)",
doc: "(n,3He25)",
},
Reaction {
id: 1086490695,
name: "He3_24",
mt: 774,
label: "(z,3He24)",
doc: "(n,3He24)",
},
Reaction {
id: 1086490698,
name: "He3_29",
mt: 779,
label: "(z,3He29)",
doc: "(n,3He29)",
},
Reaction {
id: 1086490699,
name: "He3_28",
mt: 778,
label: "(z,3He28)",
doc: "(n,3He28)",
},
Reaction {
id: 1086490720,
name: "He3_32",
mt: 782,
label: "(z,3He32)",
doc: "(n,3He32)",
},
Reaction {
id: 1086490721,
name: "He3_33",
mt: 783,
label: "(z,3He33)",
doc: "(n,3He33)",
},
Reaction {
id: 1086490722,
name: "He3_30",
mt: 780,
label: "(z,3He30)",
doc: "(n,3He30)",
},
Reaction {
id: 1086490723,
name: "He3_31",
mt: 781,
label: "(z,3He31)",
doc: "(n,3He31)",
},
Reaction {
id: 1086490724,
name: "He3_36",
mt: 786,
label: "(z,3He36)",
doc: "(n,3He36)",
},
Reaction {
id: 1086490725,
name: "He3_37",
mt: 787,
label: "(z,3He37)",
doc: "(n,3He37)",
},
Reaction {
id: 1086490726,
name: "He3_34",
mt: 784,
label: "(z,3He34)",
doc: "(n,3He34)",
},
Reaction {
id: 1086490727,
name: "He3_35",
mt: 785,
label: "(z,3He35)",
doc: "(n,3He35)",
},
Reaction {
id: 1086490730,
name: "He3_38",
mt: 788,
label: "(z,3He38)",
doc: "(n,3He38)",
},
Reaction {
id: 1086490731,
name: "He3_39",
mt: 789,
label: "(z,3He39)",
doc: "(n,3He39)",
},
Reaction {
id: 1086490752,
name: "He3_45",
mt: 795,
label: "(z,3He45)",
doc: "(n,3He45)",
},
Reaction {
id: 1086490753,
name: "He3_44",
mt: 794,
label: "(z,3He44)",
doc: "(n,3He44)",
},
Reaction {
id: 1086490754,
name: "He3_47",
mt: 797,
label: "(z,3He47)",
doc: "(n,3He47)",
},
Reaction {
id: 1086490755,
name: "He3_46",
mt: 796,
label: "(z,3He46)",
doc: "(n,3He46)",
},
Reaction {
id: 1086490756,
name: "He3_41",
mt: 791,
label: "(z,3He41)",
doc: "(n,3He41)",
},
Reaction {
id: 1086490757,
name: "He3_40",
mt: 790,
label: "(z,3He40)",
doc: "(n,3He40)",
},
Reaction {
id: 1086490758,
name: "He3_43",
mt: 793,
label: "(z,3He43)",
doc: "(n,3He43)",
},
Reaction {
id: 1086490759,
name: "He3_42",
mt: 792,
label: "(z,3He42)",
doc: "(n,3He42)",
},
Reaction {
id: 1086490765,
name: "He3_48",
mt: 798,
label: "(z,3He48)",
doc: "(n,3He48)",
},
Reaction {
id: 1174914891,
name: "n5_photoelectric",
mt: 547,
label: "N5 (4d5/2) subshell",
doc: "N5 (4d5/2) subshell",
},
Reaction {
id: 1182308392,
name: "fission_product_yield_independent",
mt: 454,
label: "Independent fission product yield",
doc: "Independent fission product yield",
},
Reaction {
id: 1288426146,
name: "antip",
mt: 217,
label: "(z,Xp-) Total anti-proton production",
doc: "(z,Xp-) Total anti-proton production",
},
Reaction {
id: 1288426172,
name: "antin",
mt: 218,
label: "(z,Xn-) Total anti-neutron production",
doc: "(z,Xn-) Total anti-neutron production",
},
Reaction {
id: 1292747035,
name: "ec_2p",
mt: 0,
label: "(z,ec2p)",
doc: "(z,ec2p)",
},
Reaction {
id: 1292747066,
name: "ec_3p",
mt: 0,
label: "(z,ec3p)",
doc: "(z,ec3p)",
},
Reaction {
id: 1293730970,
name: "decay",
mt: 457,
label: "Radioactive Decay Data",
doc: "Radioactive Decay Data",
},
Reaction {
id: 1296729272,
name: "bplus",
mt: 0,
label: "(z,b+)",
doc: "(z,b+)",
},
Reaction {
id: 1299806215,
name: "gamma",
mt: 102,
label: "(z,gamma)",
doc: "(z,gamma) Radiative capture",
},
Reaction {
id: 1302746793,
name: "muonp",
mt: 211,
label: "(z,Xmu+) Total anti-muon production",
doc: "(z,Xmu+) Total anti-muon production",
},
Reaction {
id: 1302746804,
name: "muonm",
mt: 212,
label: "(z,Xmu-) Total muon production",
doc: "(z,Xmu-) Total muon production",
},
Reaction {
id: 1302752201,
name: "mubar",
mt: 251,
label: "Average cosine of scattering angle",
doc: "Average cosine of scattering angle",
},
Reaction {
id: 1304543654,
name: "kaonm",
mt: 216,
label: "(z,Xk-) Total negative kaon production",
doc: "(z,Xk-) Total negative kaon production",
},
Reaction {
id: 1304543675,
name: "kaonp",
mt: 213,
label: "(z,Xk+) Total positive kaon production",
doc: "(z,Xk+) Total positive kaon production",
},
Reaction {
id: 1304990349,
name: "l1_photoelectric",
mt: 535,
label: "L1 (2s1/2) subshell",
doc: "L1 (2s1/2) subshell",
},
Reaction {
id: 1308389032,
name: "pion0",
mt: 209,
label: "(z,Xpi0) Total pi0 meson production",
doc: "(z,Xpi0) Total pi0 meson production",
},
Reaction {
id: 1308389096,
name: "pionp",
mt: 208,
label: "(z,Xpi+) Total pi+ meson production",
doc: "(z,Xpi+) Total pi+ meson production",
},
Reaction {
id: 1308389109,
name: "pionm",
mt: 210,
label: "(z,Xpi-) Total pi- meson production",
doc: "(z,Xpi-) Total pi- meson production",
},
Reaction {
id: 1309825896,
name: "heading",
mt: 451,
label: "Descriptive Data",
doc: "Descriptive Data",
},
Reaction {
id: 1310763978,
name: "nubar",
mt: 452,
label: "Total Neutrons per Fission",
doc: "Total Neutrons per Fission",
},
Reaction {
id: 1313192322,
name: "total",
mt: 1,
label: "(z,total)",
doc: "(n,total) Neutron total",
},
Reaction {
id: 1316197777,
name: "photon_coherent",
mt: 502,
label: "Photon coherent scattering",
doc: "Photon coherent scattering",
},
Reaction {
id: 1322647049,
name: "z_2np",
mt: 41,
label: "(z,2n+p)",
doc: "(z,2np) Production of 2n and p",
},
Reaction {
id: 1322647064,
name: "z_2na",
mt: 24,
label: "(z,2n+a)",
doc: "(z,2na) Production of 2n and alpha",
},
Reaction {
id: 1322647069,
name: "z_2nd",
mt: 11,
label: "(z,2nd)",
doc: "(z,2nd) Production of 2n and d",
},
Reaction {
id: 1322648072,
name: "z_3np",
mt: 42,
label: "(z,3n+p)",
doc: "(z,3np) Production of 3n and p",
},
Reaction {
id: 1322648089,
name: "z_3na",
mt: 25,
label: "(z,3n+a)",
doc: "(z,3na) Production of 3n and alpha",
},
Reaction {
id: 1324687403,
name: "erel_fission_fourth",
mt: 338,
label: "Energy Release from (z,3nf)",
doc: "Energy Release from (z,3nf) Fourth-chance fission",
},
Reaction {
id: 1334429200,
name: "He3_1",
mt: 751,
label: "(z,3He1)",
doc: "(n,3He1)",
},
Reaction {
id: 1334429201,
name: "He3_0",
mt: 750,
label: "(z,3He0)",
doc: "(n,3He0)",
},
Reaction {
id: 1334429202,
name: "He3_3",
mt: 753,
label: "(z,3He3)",
doc: "(n,3He3)",
},
Reaction {
id: 1334429203,
name: "He3_2",
mt: 752,
label: "(z,3He2)",
doc: "(n,3He2)",
},
Reaction {
id: 1334429204,
name: "He3_5",
mt: 755,
label: "(z,3He5)",
doc: "(n,3He5)",
},
Reaction {
id: 1334429205,
name: "He3_4",
mt: 754,
label: "(z,3He4)",
doc: "(n,3He4)",
},
Reaction {
id: 1334429206,
name: "He3_7",
mt: 757,
label: "(z,3He7)",
doc: "(n,3He7)",
},
Reaction {
id: 1334429207,
name: "He3_6",
mt: 756,
label: "(z,3He6)",
doc: "(n,3He6)",
},
Reaction {
id: 1334429208,
name: "He3_9",
mt: 759,
label: "(z,3He9)",
doc: "(n,3He9)",
},
Reaction {
id: 1334429209,
name: "He3_8",
mt: 758,
label: "(z,3He8)",
doc: "(n,3He8)",
},
Reaction {
id: 1355893985,
name: "bminus_p",
mt: 0,
label: "(z,b-p)",
doc: "(z,b-p)",
},
Reaction {
id: 1355894000,
name: "bminus_a",
mt: 0,
label: "(z,b-a)",
doc: "(z,b-a)",
},
Reaction {
id: 1355894015,
name: "bminus_n",
mt: 0,
label: "(z,b-n)",
doc: "(z,b-n)",
},
Reaction {
id: 1367786793,
name: "m4_photoelectric",
mt: 541,
label: "M4 (3d1/2) subshell",
doc: "M4 (3d1/2) subshell",
},
Reaction {
id: 1402767231,
name: "erel_He3",
mt: 406,
label: "Energy Release from (z,3He)",
doc: "Energy Release from (z,3He) Production of He-3",
},
Reaction {
id: 1402798134,
name: "erel_d2a",
mt: 414,
label: "Energy Release from (z,d2a)",
doc: "Energy Release from (z,d2a) Production of d and 2 alphas",
},
Reaction {
id: 1402808877,
name: "erel_n2p",
mt: 344,
label: "Energy Release from (z,n+2p)",
doc: "Energy Release from (z,n2p) Production of n and 2p",
},
Reaction {
id: 1402808892,
name: "erel_n2a",
mt: 329,
label: "Energy Release from (z,n+2a)",
doc: "Energy Release from (z,n2a) Production of n and 2 alphas",
},
Reaction {
id: 1402808925,
name: "erel_n3a",
mt: 323,
label: "Energy Release from (z,n+3a)",
doc: "Energy Release from (z,n3a) Production of n and 3 alphas",
},
Reaction {
id: 1402809568,
name: "erel_n_0",
mt: 350,
label: "Energy Release from (z,n0)",
doc: "Energy Release from (z,n0) Production of n, ground state",
},
Reaction {
id: 1402809569,
name: "erel_n_1",
mt: 351,
label: "Energy Release from (z,n1)",
doc: "Energy Release from (z,n1) Production of n, 1st excited state",
},
Reaction {
id: 1402809570,
name: "erel_n_2",
mt: 352,
label: "Energy Release from (z,n2)",
doc: "Energy Release from (z,n2) Production of n, 2nd excited state",
},
Reaction {
id: 1402809571,
name: "erel_n_3",
mt: 353,
label: "Energy Release from (z,n3)",
doc: "Energy Release from (z,n3) Production of n, 3rd excited state",
},
Reaction {
id: 1402809572,
name: "erel_n_4",
mt: 354,
label: "Energy Release from (z,n4)",
doc: "Energy Release from (z,n4) Production of n, 4th excited state",
},
Reaction {
id: 1402809573,
name: "erel_n_5",
mt: 355,
label: "Energy Release from (z,n5)",
doc: "Energy Release from (z,n5) Production of n, 5th excited state",
},
Reaction {
id: 1402809574,
name: "erel_n_6",
mt: 356,
label: "Energy Release from (z,n6)",
doc: "Energy Release from (z,n6) Production of n, 6th excited state",
},
Reaction {
id: 1402809575,
name: "erel_n_7",
mt: 357,
label: "Energy Release from (z,n7)",
doc: "Energy Release from (z,n7) Production of n, 7th excited state",
},
Reaction {
id: 1402809576,
name: "erel_n_8",
mt: 358,
label: "Energy Release from (z,n8)",
doc: "Energy Release from (z,n8) Production of n, 8th excited state",
},
Reaction {
id: 1402809577,
name: "erel_n_9",
mt: 359,
label: "Energy Release from (z,n9)",
doc: "Energy Release from (z,n9) Production of n, 9th excited state",
},
Reaction {
id: 1402811070,
name: "erel_npa",
mt: 345,
label: "Energy Release from (z,npa)",
doc: "Energy Release from (z,npa) Production of n, p, and alpha",
},
Reaction {
id: 1402814502,
name: "erel_t2a",
mt: 413,
label: "Energy Release from (z,t2a)",
doc: "Energy Release from (z,t2a) Production of t and 2 alphas",
},
Reaction {
id: 1402880685,
name: "erel_2np",
mt: 341,
label: "Energy Release from (z,2n+p)",
doc: "Energy Release from (z,2np) Production of 2n and p",
},
Reaction {
id: 1402880697,
name: "erel_2nd",
mt: 311,
label: "Energy Release from (z,2nd)",
doc: "Energy Release from (z,2nd) Production of 2n and d",
},
Reaction {
id: 1402880700,
name: "erel_2na",
mt: 324,
label: "Energy Release from (z,2n+a)",
doc: "Energy Release from (z,2na) Production of 2n and alpha",
},
Reaction {
id: 1402881708,
name: "erel_3np",
mt: 342,
label: "Energy Release from (z,3n+p)",
doc: "Energy Release from (z,3np) Production of 3n and p",
},
Reaction {
id: 1402881725,
name: "erel_3na",
mt: 325,
label: "Energy Release from (z,3n+a)",
doc: "Energy Release from (z,3na) Production of 3n and alpha",
},
Reaction {
id: 1428718487,
name: "p7_photoelectric",
mt: 565,
label: "P7 (6f7/2) subshell",
doc: "P7 (6f7/2) subshell",
},
Reaction {
id: 1499423053,
name: "p_total",
mt: 203,
label: "(z,Xp)",
doc: "(z,Xp) Total proton production",
},
Reaction {
id: 1504791020,
name: "gamma_delayed",
mt: 460,
label: "Delayed Photon Data",
doc: "Delayed Photon Data",
},
Reaction {
id: 1534549819,
name: "fission_third",
mt: 21,
label: "(z,2nf)",
doc: "(z,2nf) Third-chance fission",
},
Reaction {
id: 1560426786,
name: "fission_first",
mt: 19,
label: "(z,f)",
doc: "(z,f) First-chance fission",
},
Reaction {
id: 1620221105,
name: "decay_2ec",
mt: 0,
label: "(z,2ec)",
doc: "(z,2ec)",
},
Reaction {
id: 1620221635,
name: "decay_14c",
mt: 0,
label: "(z,14c)",
doc: "(z,14c)",
},
Reaction {
id: 1670083242,
name: "o5_photoelectric",
mt: 554,
label: "O5 (5d5/2) subshell",
doc: "O5 (5d5/2) subshell",
},
Reaction {
id: 1690515523,
name: "fission_product_yield_cumulative",
mt: 459,
label: "Cumulative Fission Product Yield",
doc: "Cumulative Fission Product Yield",
},
Reaction {
id: 1707133721,
name: "p9_photoelectric",
mt: 567,
label: "P9 (6g9/2) subshell",
doc: "P9 (6g9/2) subshell",
},
Reaction {
id: 1733039548,
name: "pair_prod",
mt: 516,
label: "Total pair production",
doc: "Total pair production",
},
Reaction {
id: 1734033407,
name: "photon_total",
mt: 501,
label: "Total photon interaction",
doc: "Total photon interaction",
},
Reaction {
id: 1794826380,
name: "bminus_3n",
mt: 0,
label: "(z,b-3n)",
doc: "(z,b-3n)",
},
Reaction {
id: 1794826539,
name: "bminus_4n",
mt: 0,
label: "(z,b-4n)",
doc: "(z,b-4n)",
},
Reaction {
id: 1794826605,
name: "bminus_2n",
mt: 0,
label: "(z,b-2n)",
doc: "(z,b-2n)",
},
Reaction {
id: 1794828612,
name: "bminus_sf",
mt: 0,
label: "(z,b-sf)",
doc: "(z,b-sf)",
},
Reaction {
id: 1800204551,
name: "d_continuum",
mt: 699,
label: "(z,dc)",
doc: "(n,dc)",
},
Reaction {
id: 1859435552,
name: "disappearance",
mt: 101,
label: "(z,disap) Neutron disappearance",
doc: "(n,disap) Neutron disappearance",
},
Reaction {
id: 1885723876,
name: "erel_elastic",
mt: 302,
label: "Energy Release from (z,elastic)",
doc: "Energy Release from (z,z0) Elastic scattering",
},
Reaction {
id: 1895268442,
name: "excitation_electroatomic",
mt: 528,
label: "Electro-atomic excitation cross section",
doc: "Electro-atomic excitation cross section",
},
Reaction {
id: 2025579481,
name: "decay_2bminus",
mt: 0,
label: "(z,2b-)",
doc: "(z,2b-)",
},
Reaction {
id: 2057215276,
name: "o3_photoelectric",
mt: 552,
label: "O3 (5p3/2) subshell",
doc: "O3 (5p3/2) subshell",
},
Reaction {
id: 2066453065,
name: "t_total",
mt: 205,
label: "(z,Xt)",
doc: "(z,Xt) Total triton production",
},
Reaction {
id: 2131725889,
name: "p10_photoelectric",
mt: 568,
label: "P10 (6h9/2) subshell",
doc: "P10 (6h9/2) subshell",
},
Reaction {
id: 2152134415,
name: "l3_photoelectric",
mt: 537,
label: "L3 (2p3/2) subshell",
doc: "L3 (2p3/2) subshell",
},
Reaction {
id: 2240811086,
name: "kaon0_long",
mt: 214,
label: "(z,Xk0long) Total long-lived neutral kaon production",
doc: "(z,Xk0long) Total long-lived neutral kaon production",
},
Reaction {
id: 2288689427,
name: "p_continuum",
mt: 649,
label: "(z,pc)",
doc: "(n,pc)",
},
Reaction {
id: 2322247959,
name: "t_continuum",
mt: 749,
label: "(z,tc)",
doc: "(n,tc)",
},
Reaction {
id: 2354795884,
name: "pair_prod_elec",
mt: 515,
label: "Pair production, electron field",
doc: "Pair production, electron field",
},
Reaction {
id: 2444726152,
name: "gamma_0",
mt: 0,
label: "(z,gamma0)",
doc: "(z,gamma0) Radiative capture, ground state",
},
Reaction {
id: 2444726153,
name: "gamma_1",
mt: 0,
label: "(z,gamma1)",
doc: "(z,gamma1) Radiative capture, 1st excited state",
},
Reaction {
id: 2444726154,
name: "gamma_2",
mt: 0,
label: "(z,gamma2)",
doc: "(z,gamma2) Radiative capture, 2st excited state",
},
Reaction {
id: 2458283469,
name: "n3_photoelectric",
mt: 545,
label: "N3 (4p3/2) subshell",
doc: "N3 (4p3/2) subshell",
},
Reaction {
id: 2532074717,
name: "He3_continuum",
mt: 799,
label: "(z,3Hec)",
doc: "(n,3Hec)",
},
Reaction {
id: 2563929586,
name: "photoexcitation",
mt: 523,
label: "Photo-excitation cross section",
doc: "Photo-excitation cross section",
},
Reaction {
id: 2595665743,
name: "n1_photoelectric",
mt: 543,
label: "N1 (4s1/2) subshell",
doc: "N1 (4s1/2) subshell",
},
Reaction {
id: 2602749761,
name: "erel_disappearance",
mt: 401,
label: "Energy Release from (z,disap) Neutron disappearance",
doc: "Energy Release from (n,disap) Neutron disappearance",
},
Reaction {
id: 2637498473,
name: "scattering_factor_imag",
mt: 505,
label: "Imaginary scattering factor",
doc: "Imaginary scattering factor",
},
Reaction {
id: 2638379601,
name: "scattering_factor_real",
mt: 506,
label: "Real scattering factor",
doc: "Real scattering factor",
},
Reaction {
id: 2662420913,
name: "absorption_photoelectric",
mt: 522,
label: "Photoelectric absorption",
doc: "Photoelectric absorption",
},
Reaction {
id: 2669049960,
name: "stopping_power",
mt: 500,
label: "Total charged-particle stopping power",
doc: "Total charged-particle stopping power",
},
Reaction {
id: 2730041194,
name: "nonelastic",
mt: 3,
label: "(z,nonelastic)",
doc: "(z,nonelas) Nonelastic neutron",
},
Reaction {
id: 2739445167,
name: "m2_photoelectric",
mt: 539,
label: "M2 (3p1/2) subshell",
doc: "M2 (3p1/2) subshell",
},
Reaction {
id: 2752019954,
name: "q3_photoelectric",
mt: 572,
label: "Q3 (7p3/2) subshell",
doc: "Q3 (7p3/2) subshell",
},
Reaction {
id: 2754005670,
name: "scattering",
mt: 0,
label: "(z,scattering)",
doc: "Total scattering",
},
Reaction {
id: 2779431655,
name: "o8_photoelectric",
mt: 557,
label: "O8 (5g7/2) subshell",
doc: "O8 (5g7/2) subshell",
},
Reaction {
id: 2801112432,
name: "q1_photoelectric",
mt: 570,
label: "Q1 (7s1/2) subshell",
doc: "Q1 (7s1/2) subshell",
},
Reaction {
id: 2838001037,
name: "n_continuum",
mt: 91,
label: "(z,nc)",
doc: "(z,nc) Production of n in continuum",
},
Reaction {
id: 2871372137,
name: "o6_photoelectric",
mt: 555,
label: "O6 (5f5/2) subshell",
doc: "O6 (5f5/2) subshell",
},
Reaction {
id: 2877188562,
name: "p2_photoelectric",
mt: 560,
label: "P2 (6p1/2) subshell",
doc: "P2 (6p1/2) subshell",
},
Reaction {
id: 2929686502,
name: "erel_gamma",
mt: 402,
label: "Energy Release from (z,gamma)",
doc: "Energy Release from (z,gamma) Radiative capture",
},
Reaction {
id: 2946786027,
name: "erel_nonelastic",
mt: 303,
label: "Energy Release from (z,nonelastic)",
doc: "Energy Release from (z,nonelas) Nonelastic neutron",
},
Reaction {
id: 2949902819,
name: "erel_total",
mt: 301,
label: "Energy Release from (z,total)",
doc: "Energy Release from (n,total) Neutron total",
},
Reaction {
id: 3061099522,
name: "energy_per_fission",
mt: 458,
label: "Energy Release Due to Fission",
doc: "Energy Release Due to Fission",
},
Reaction {
id: 3064829531,
name: "pair_prod_nuc",
mt: 517,
label: "Pair production, nuclear field",
doc: "Pair production, nuclear field",
},
Reaction {
id: 3090834094,
name: "o1_photoelectric",
mt: 550,
label: "O1 (5s1/2) subshell",
doc: "O1 (5s1/2) subshell",
},
Reaction {
id: 3163131457,
name: "absorption",
mt: 27,
label: "(z,abs) Absorption",
doc: "(n,abs) Absorption",
},
Reaction {
id: 3182278881,
name: "ec_bplus",
mt: 0,
label: "(z,ec+b+)",
doc: "(z,ec+b+)",
},
Reaction {
id: 3208512282,
name: "gamma_total",
mt: 202,
label: "(z,Xgamma)",
doc: "(z,Xgamma) Total gamma production",
},
Reaction {
id: 3314405935,
name: "decay_2bplus",
mt: 0,
label: "(z,2b+)",
doc: "(z,2b+)",
},
Reaction {
id: 3322166016,
name: "erel_absorption",
mt: 327,
label: "Energy Release from (z,abs) Absorption",
doc: "Energy Release from (n,abs) Absorption",
},
Reaction {
id: 3339980022,
name: "photon_incoherent",
mt: 504,
label: "Photon incoherent scattering",
doc: "Photon incoherent scattering",
},
Reaction {
id: 3342888245,
name: "erel_misc",
mt: 305,
label: "Energy Release from (misc)",
doc: "Energy Release from (z,anything) Miscellaneous",
},
Reaction {
id: 3343033393,
name: "erel_nHe3",
mt: 334,
label: "Energy Release from (z,n+He3)",
doc: "Energy Release from (z,n3He) Production of n and He-3",
},
Reaction {
id: 3343042832,
name: "erel_n_22",
mt: 372,
label: "Energy Release from (z,n22)",
doc: "Energy Release from (z,n22) Production of n, 22nd excited state",
},
Reaction {
id: 3343042833,
name: "erel_n_23",
mt: 373,
label: "Energy Release from (z,n23)",
doc: "Energy Release from (z,n23) Production of n, 23rd excited state",
},
Reaction {
id: 3343042834,
name: "erel_n_20",
mt: 370,
label: "Energy Release from (z,n20)",
doc: "Energy Release from (z,n20) Production of n, 20th excited state",
},
Reaction {
id: 3343042835,
name: "erel_n_21",
mt: 371,
label: "Energy Release from (z,n21)",
doc: "Energy Release from (z,n21) Production of n, 21st excited state",
},
Reaction {
id: 3343042836,
name: "erel_n_26",
mt: 376,
label: "Energy Release from (z,n26)",
doc: "Energy Release from (z,n26) Production of n, 26th excited state",
},
Reaction {
id: 3343042837,
name: "erel_n_27",
mt: 377,
label: "Energy Release from (z,n27)",
doc: "Energy Release from (z,n27) Production of n, 27th excited state",
},
Reaction {
id: 3343042838,
name: "erel_n_24",
mt: 374,
label: "Energy Release from (z,n24)",
doc: "Energy Release from (z,n24) Production of n, 24th excited state",
},
Reaction {
id: 3343042839,
name: "erel_n_25",
mt: 375,
label: "Energy Release from (z,n25)",
doc: "Energy Release from (z,n25) Production of n, 25th excited state",
},
Reaction {
id: 3343042842,
name: "erel_n_28",
mt: 378,
label: "Energy Release from (z,n28)",
doc: "Energy Release from (z,n28) Production of n, 28th excited state",
},
Reaction {
id: 3343042843,
name: "erel_n_29",
mt: 379,
label: "Energy Release from (z,n29)",
doc: "Energy Release from (z,n29) Production of n, 29th excited state",
},
Reaction {
id: 3343042864,
name: "erel_n_11",
mt: 361,
label: "Energy Release from (z,n11)",
doc: "Energy Release from (z,n11) Production of n, 11th excited state",
},
Reaction {
id: 3343042865,
name: "erel_n_10",
mt: 360,
label: "Energy Release from (z,n10)",
doc: "Energy Release from (z,n10) Production of n, 10th excited state",
},
Reaction {
id: 3343042866,
name: "erel_n_13",
mt: 363,
label: "Energy Release from (z,n13)",
doc: "Energy Release from (z,n13) Production of n, 13th excited state",
},
Reaction {
id: 3343042867,
name: "erel_n_12",
mt: 362,
label: "Energy Release from (z,n12)",
doc: "Energy Release from (z,n12) Production of n, 12th excited state",
},
Reaction {
id: 3343042868,
name: "erel_n_15",
mt: 365,
label: "Energy Release from (z,n15)",
doc: "Energy Release from (z,n15) Production of n, 15th excited state",
},
Reaction {
id: 3343042869,
name: "erel_n_14",
mt: 364,
label: "Energy Release from (z,n14)",
doc: "Energy Release from (z,n14) Production of n, 14th excited state",
},
Reaction {
id: 3343042870,
name: "erel_n_17",
mt: 367,
label: "Energy Release from (z,n17)",
doc: "Energy Release from (z,n17) Production of n, 17th excited state",
},
Reaction {
id: 3343042871,
name: "erel_n_16",
mt: 366,
label: "Energy Release from (z,n16)",
doc: "Energy Release from (z,n16) Production of n, 16th excited state",
},
Reaction {
id: 3343042872,
name: "erel_n_19",
mt: 369,
label: "Energy Release from (z,n19)",
doc: "Energy Release from (z,n19) Production of n, 19th excited state",
},
Reaction {
id: 3343042873,
name: "erel_n_18",
mt: 368,
label: "Energy Release from (z,n18)",
doc: "Energy Release from (z,n18) Production of n, 18th excited state",
},
Reaction {
id: 3343042900,
name: "erel_n_40",
mt: 390,
label: "Energy Release from (z,n40)",
doc: "Energy Release from (z,n40) Production of n, 40th excited state",
},
Reaction {
id: 3343042928,
name: "erel_n_33",
mt: 383,
label: "Energy Release from (z,n33)",
doc: "Energy Release from (z,n33) Production of n, 33rd excited state",
},
Reaction {
id: 3343042929,
name: "erel_n_32",
mt: 382,
label: "Energy Release from (z,n32)",
doc: "Energy Release from (z,n32) Production of n, 32nd excited state",
},
Reaction {
id: 3343042930,
name: "erel_n_31",
mt: 381,
label: "Energy Release from (z,n31)",
doc: "Energy Release from (z,n31) Production of n, 31st excited state",
},
Reaction {
id: 3343042931,
name: "erel_n_30",
mt: 380,
label: "Energy Release from (z,n30)",
doc: "Energy Release from (z,n30) Production of n, 30th excited state",
},
Reaction {
id: 3343042932,
name: "erel_n_37",
mt: 387,
label: "Energy Release from (z,n37)",
doc: "Energy Release from (z,n37) Production of n, 37th excited state",
},
Reaction {
id: 3343042933,
name: "erel_n_36",
mt: 386,
label: "Energy Release from (z,n36)",
doc: "Energy Release from (z,n36) Production of n, 36th excited state",
},
Reaction {
id: 3343042934,
name: "erel_n_35",
mt: 385,
label: "Energy Release from (z,n35)",
doc: "Energy Release from (z,n35) Production of n, 35th excited state",
},
Reaction {
id: 3343042935,
name: "erel_n_34",
mt: 384,
label: "Energy Release from (z,n34)",
doc: "Energy Release from (z,n34) Production of n, 34th excited state",
},
Reaction {
id: 3343042938,
name: "erel_n_39",
mt: 389,
label: "Energy Release from (z,n39)",
doc: "Energy Release from (z,n39) Production of n, 39th excited state",
},
Reaction {
id: 3343042939,
name: "erel_n_38",
mt: 388,
label: "Energy Release from (z,n38)",
doc: "Energy Release from (z,n38) Production of n, 38th excited state",
},
Reaction {
id: 3343073049,
name: "erel_nd3a",
mt: 335,
label: "Energy Release from (z,n+d+3a)",
doc: "Energy Release from (z,nd2a) Production of n, d, and alpha",
},
Reaction {
id: 3343089640,
name: "erel_nt2a",
mt: 336,
label: "Energy Release from (z,n+t+2a)",
doc: "Energy Release from (z,nt2a) Production of n, t, and 2 alphas",
},
Reaction {
id: 3345391790,
name: "erel_2n2a",
mt: 330,
label: "Energy Release from (z,2n+2a)",
doc: "Energy Release from (z,2n2a) Production of 2n and 2 alphas",
},
Reaction {
id: 3388905638,
name: "bplus_a",
mt: 0,
label: "(z,b+a)",
doc: "(z,b+a)",
},
Reaction {
id: 3388905655,
name: "bplus_p",
mt: 0,
label: "(z,b+p)",
doc: "(z,b+p)",
},
Reaction {
id: 3437956488,
name: "fission_second",
mt: 20,
label: "(z,nf)",
doc: "(z,nf) Second chance fission",
},
Reaction {
id: 3455790865,
name: "p1_photoelectric",
mt: 559,
label: "P1 (6s1/2) subshell",
doc: "P1 (6s1/2) subshell",
},
Reaction {
id: 3524528360,
name: "m5_photoelectric",
mt: 542,
label: "M5 (3d1/2) subshell",
doc: "M5 (3d1/2) subshell",
},
Reaction {
id: 3556114565,
name: "elastic",
mt: 2,
label: "(z,elastic)",
doc: "(z,z0) Elastic scattering",
},
Reaction {
id: 3619292418,
name: "a_continuum",
mt: 849,
label: "(z,ac)",
doc: "(n,ac)",
},
Reaction {
id: 3810071560,
name: "n6_photoelectric",
mt: 548,
label: "N6 (4f5/2) subshell",
doc: "N6 (4f5/2) subshell",
},
Reaction {
id: 3898946525,
name: "atomic_relaxation",
mt: 533,
label: "Atomic relaxation data",
doc: "Atomic relaxation data",
},
Reaction {
id: 3904990955,
name: "o4_photoelectric",
mt: 553,
label: "O4 (5d3/2) subshell",
doc: "O4 (5d3/2) subshell",
},
Reaction {
id: 3909112679,
name: "fission",
mt: 18,
label: "(z,fission)",
doc: "(z,fiss) Particle-induced fission",
},
Reaction {
id: 3947024676,
name: "erel_da",
mt: 417,
label: "Energy Release from (z,da)",
doc: "Energy Release from (z,da) Production of d and a",
},
Reaction {
id: 3947025061,
name: "erel_pt",
mt: 416,
label: "Energy Release from (z,pt)",
doc: "Energy Release from (z,pt) Production of p and t",
},
Reaction {
id: 3947025072,
name: "erel_pa",
mt: 412,
label: "Energy Release from (z,pa)",
doc: "Energy Release from (z,pa) Production of p and alpha",
},
Reaction {
id: 3947025077,
name: "erel_pd",
mt: 415,
label: "Energy Release from (z,pd)",
doc: "Energy Release from (z,pd) Production of p and d",
},
Reaction {
id: 3947025131,
name: "erel_nd",
mt: 332,
label: "Energy Release from (z,nd)",
doc: "Energy Release from (z,nd) Production of n and d",
},
Reaction {
id: 3947025134,
name: "erel_na",
mt: 322,
label: "Energy Release from (z,n+a)",
doc: "Energy Release from (z,na) Production of n and alpha",
},
Reaction {
id: 3947025147,
name: "erel_nt",
mt: 333,
label: "Energy Release from (z,nt)",
doc: "Energy Release from (z,nt) Production of n and t",
},
Reaction {
id: 3947025151,
name: "erel_np",
mt: 328,
label: "Energy Release from (z,n+p)",
doc: "Energy Release from (z,np) Production of n and p",
},
Reaction {
id: 3947027235,
name: "erel_2p",
mt: 411,
label: "Energy Release from (z,2p)",
doc: "Energy Release from (z,2p) Production of 2p",
},
Reaction {
id: 3947027250,
name: "erel_2a",
mt: 408,
label: "Energy Release from (z,2a)",
doc: "Energy Release from (z,2a) Production of 2 alphas",
},
Reaction {
id: 3947027261,
name: "erel_2n",
mt: 316,
label: "Energy Release from (z,2n)",
doc: "Energy Release from (z,2n) Production of 2n",
},
Reaction {
id: 3947027283,
name: "erel_3a",
mt: 409,
label: "Energy Release from (z,3a)",
doc: "Energy Release from (z,3a) Production of 3 alphas",
},
Reaction {
id: 3947027292,
name: "erel_3n",
mt: 317,
label: "Energy Release from (z,3n)",
doc: "Energy Release from (z,3n) Production of 3n",
},
Reaction {
id: 3947027451,
name: "erel_4n",
mt: 337,
label: "Energy Release from (z,4n)",
doc: "Energy Release from (z,4n) Production of 4n",
},
Reaction {
id: 3977280353,
name: "nubar_delayed",
mt: 455,
label: "Delayed Neutron Data",
doc: "Delayed Neutron Data",
},
Reaction {
id: 4013242370,
name: "epsilon",
mt: 252,
label: "Average logarithmic energy decrement",
doc: "Average logarithmic energy decrement",
},
Reaction {
id: 4024122528,
name: "erel_a",
mt: 407,
label: "Energy Release from (z,a)",
doc: "Energy Release from (z,a) Production of alpha",
},
Reaction {
id: 4024122533,
name: "erel_d",
mt: 404,
label: "Energy Release from (z,d)",
doc: "Energy Release from (z,d) Production of d",
},
Reaction {
id: 4024122543,
name: "erel_n",
mt: 304,
label: "Energy Release from (z,inelastic)",
doc: "Energy Release from (z,n) One neutron in exit channel",
},
Reaction {
id: 4024122545,
name: "erel_p",
mt: 403,
label: "Energy Release from (z,p)",
doc: "Energy Release from (z,p) Production of p",
},
Reaction {
id: 4024122549,
name: "erel_t",
mt: 405,
label: "Energy Release from (z,t)",
doc: "Energy Release from (z,t) Production of t",
},
Reaction {
id: 4039916163,
name: "He3_total",
mt: 206,
label: "(z,X3He)",
doc: "(z,X3He) Total He-3 production",
},
Reaction {
id: 4043370667,
name: "damage",
mt: 444,
label: "(damage)",
doc: "(damage)",
},
Reaction {
id: 4044931548,
name: "continuum",
mt: 10,
label: "(z,continuum)",
doc: "(z,contin) Total continuum reaction",
},
Reaction {
id: 4049202458,
name: "erel_fission_third",
mt: 321,
label: "Energy Release from (z,2nf)",
doc: "Energy Release from (z,2nf) Third-chance fission",
},
Reaction {
id: 4058975827,
name: "n_total",
mt: 201,
label: "(z,Xn)",
doc: "(z,Xn) Total neutron production",
},
Reaction {
id: 4075153411,
name: "erel_fission_first",
mt: 319,
label: "Energy Release from (z,f)",
doc: "Energy Release from (z,f) First-chance fission",
},
Reaction {
id: 4092219993,
name: "d_total",
mt: 204,
label: "(z,Xd)",
doc: "(z,Xd) Total deuteron production",
},
Reaction {
id: 4130566254,
name: "bminus",
mt: 0,
label: "(z,b-)",
doc: "(z,b-)",
},
Reaction {
id: 4160557140,
name: "p4_photoelectric",
mt: 562,
label: "P4 (6d3/2) subshell",
doc: "P4 (6d3/2) subshell",
},
Reaction {
id: 4176363142,
name: "erel_fission",
mt: 318,
label: "Energy Release from (z,fission)",
doc: "Energy Release from (z,fiss) Particle-induced fission",
},
Reaction {
id: 4238120298,
name: "fission_fourth",
mt: 38,
label: "(z,3nf)",
doc: "(z,3nf) Fourth-chance fission",
},
Reaction {
id: 4292122989,
name: "o2_photoelectric",
mt: 551,
label: "O2 (5p1/2) subshell",
doc: "O2 (5p1/2) subshell",
},
];
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Error {
NotAReaction(String),
UnknownMt(i32),
Indeterminate {
projectile: Projectile,
delta: NucDelta,
},
UnknownOffset {
projectile: Projectile,
id: u32,
},
BadNuclide(crate::Error),
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Error::NotAReaction(s) => write!(f, "not a reaction: `{s}`"),
Error::UnknownMt(mt) => write!(f, "no reaction carries MT number {mt}"),
Error::Indeterminate { projectile, delta } => {
write!(f, "indeterminate reaction form: {projectile:?} {delta:?}")
}
Error::UnknownOffset { projectile, id } => {
write!(
f,
"no offset registered for {projectile:?} reaction id {id}"
)
}
Error::BadNuclide(e) => write!(f, "channel yields invalid nuclide: {e}"),
}
}
}
impl std::error::Error for Error {}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Default)]
pub enum Projectile {
#[default]
Neutron,
Proton,
Deuteron,
Triton,
Helion3,
Alpha,
Gamma,
Decay,
}
impl Projectile {
pub fn from_flag(flag: &str) -> Result<Self, Error> {
match flag.trim() {
"n" => Ok(Self::Neutron),
"p" => Ok(Self::Proton),
"d" => Ok(Self::Deuteron),
"t" => Ok(Self::Triton),
"He3" => Ok(Self::Helion3),
"a" => Ok(Self::Alpha),
"gamma" => Ok(Self::Gamma),
"decay" => Ok(Self::Decay),
s => Err(Error::NotAReaction(s.to_string())),
}
}
#[must_use]
pub const fn flag(self) -> &'static str {
match self {
Self::Neutron => "n",
Self::Proton => "p",
Self::Deuteron => "d",
Self::Triton => "t",
Self::Helion3 => "He3",
Self::Alpha => "a",
Self::Gamma => "gamma",
Self::Decay => "decay",
}
}
}
impl std::str::FromStr for Projectile {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Self::from_flag(s)
}
}
#[must_use]
pub const fn hash(name: &str) -> u32 {
let bytes = name.as_bytes();
let mut h: u32 = 32;
let mut i = 0;
while i < bytes.len() {
h = (h << 5).wrapping_add(h) ^ (bytes[i] as u32);
i += 1;
}
h
}
fn canonical_id(name: &str) -> Option<u32> {
match name {
"He3" => Some(hash("He3")),
"He3_0" => Some(hash("He3_0")),
"He3_1" => Some(hash("He3_1")),
"He3_10" => Some(hash("He3_10")),
"He3_11" => Some(hash("He3_11")),
"He3_12" => Some(hash("He3_12")),
"He3_13" => Some(hash("He3_13")),
"He3_14" => Some(hash("He3_14")),
"He3_15" => Some(hash("He3_15")),
"He3_16" => Some(hash("He3_16")),
"He3_17" => Some(hash("He3_17")),
"He3_18" => Some(hash("He3_18")),
"He3_19" => Some(hash("He3_19")),
"He3_2" => Some(hash("He3_2")),
"He3_20" => Some(hash("He3_20")),
"He3_21" => Some(hash("He3_21")),
"He3_22" => Some(hash("He3_22")),
"He3_23" => Some(hash("He3_23")),
"He3_24" => Some(hash("He3_24")),
"He3_25" => Some(hash("He3_25")),
"He3_26" => Some(hash("He3_26")),
"He3_27" => Some(hash("He3_27")),
"He3_28" => Some(hash("He3_28")),
"He3_29" => Some(hash("He3_29")),
"He3_3" => Some(hash("He3_3")),
"He3_30" => Some(hash("He3_30")),
"He3_31" => Some(hash("He3_31")),
"He3_32" => Some(hash("He3_32")),
"He3_33" => Some(hash("He3_33")),
"He3_34" => Some(hash("He3_34")),
"He3_35" => Some(hash("He3_35")),
"He3_36" => Some(hash("He3_36")),
"He3_37" => Some(hash("He3_37")),
"He3_38" => Some(hash("He3_38")),
"He3_39" => Some(hash("He3_39")),
"He3_4" => Some(hash("He3_4")),
"He3_40" => Some(hash("He3_40")),
"He3_41" => Some(hash("He3_41")),
"He3_42" => Some(hash("He3_42")),
"He3_43" => Some(hash("He3_43")),
"He3_44" => Some(hash("He3_44")),
"He3_45" => Some(hash("He3_45")),
"He3_46" => Some(hash("He3_46")),
"He3_47" => Some(hash("He3_47")),
"He3_48" => Some(hash("He3_48")),
"He3_5" => Some(hash("He3_5")),
"He3_6" => Some(hash("He3_6")),
"He3_7" => Some(hash("He3_7")),
"He3_8" => Some(hash("He3_8")),
"He3_9" => Some(hash("He3_9")),
"He3_continuum" => Some(hash("He3_continuum")),
"He3_total" => Some(hash("He3_total")),
"a" => Some(hash("a")),
"a_0" => Some(hash("a_0")),
"a_1" => Some(hash("a_1")),
"a_10" => Some(hash("a_10")),
"a_11" => Some(hash("a_11")),
"a_12" => Some(hash("a_12")),
"a_13" => Some(hash("a_13")),
"a_14" => Some(hash("a_14")),
"a_15" => Some(hash("a_15")),
"a_16" => Some(hash("a_16")),
"a_17" => Some(hash("a_17")),
"a_18" => Some(hash("a_18")),
"a_19" => Some(hash("a_19")),
"a_2" => Some(hash("a_2")),
"a_20" => Some(hash("a_20")),
"a_21" => Some(hash("a_21")),
"a_22" => Some(hash("a_22")),
"a_23" => Some(hash("a_23")),
"a_24" => Some(hash("a_24")),
"a_25" => Some(hash("a_25")),
"a_26" => Some(hash("a_26")),
"a_27" => Some(hash("a_27")),
"a_28" => Some(hash("a_28")),
"a_29" => Some(hash("a_29")),
"a_3" => Some(hash("a_3")),
"a_30" => Some(hash("a_30")),
"a_31" => Some(hash("a_31")),
"a_32" => Some(hash("a_32")),
"a_33" => Some(hash("a_33")),
"a_34" => Some(hash("a_34")),
"a_35" => Some(hash("a_35")),
"a_36" => Some(hash("a_36")),
"a_37" => Some(hash("a_37")),
"a_38" => Some(hash("a_38")),
"a_39" => Some(hash("a_39")),
"a_4" => Some(hash("a_4")),
"a_40" => Some(hash("a_40")),
"a_41" => Some(hash("a_41")),
"a_42" => Some(hash("a_42")),
"a_43" => Some(hash("a_43")),
"a_44" => Some(hash("a_44")),
"a_45" => Some(hash("a_45")),
"a_46" => Some(hash("a_46")),
"a_47" => Some(hash("a_47")),
"a_48" => Some(hash("a_48")),
"a_5" => Some(hash("a_5")),
"a_6" => Some(hash("a_6")),
"a_7" => Some(hash("a_7")),
"a_8" => Some(hash("a_8")),
"a_9" => Some(hash("a_9")),
"a_continuum" => Some(hash("a_continuum")),
"a_total" => Some(hash("a_total")),
"absorption" => Some(hash("absorption")),
"absorption_photoelectric" => Some(hash("absorption_photoelectric")),
"antin" => Some(hash("antin")),
"antip" => Some(hash("antip")),
"atomic_relaxation" => Some(hash("atomic_relaxation")),
"bminus" => Some(hash("bminus")),
"bminus_2n" => Some(hash("bminus_2n")),
"bminus_3n" => Some(hash("bminus_3n")),
"bminus_4n" => Some(hash("bminus_4n")),
"bminus_a" => Some(hash("bminus_a")),
"bminus_n" => Some(hash("bminus_n")),
"bminus_p" => Some(hash("bminus_p")),
"bminus_sf" => Some(hash("bminus_sf")),
"bplus" => Some(hash("bplus")),
"bplus_2p" => Some(hash("bplus_2p")),
"bplus_3p" => Some(hash("bplus_3p")),
"bplus_a" => Some(hash("bplus_a")),
"bplus_p" => Some(hash("bplus_p")),
"bremsstrahlung" => Some(hash("bremsstrahlung")),
"continuum" => Some(hash("continuum")),
"d" => Some(hash("d")),
"d2a" => Some(hash("d2a")),
"d_0" => Some(hash("d_0")),
"d_1" => Some(hash("d_1")),
"d_10" => Some(hash("d_10")),
"d_11" => Some(hash("d_11")),
"d_12" => Some(hash("d_12")),
"d_13" => Some(hash("d_13")),
"d_14" => Some(hash("d_14")),
"d_15" => Some(hash("d_15")),
"d_16" => Some(hash("d_16")),
"d_17" => Some(hash("d_17")),
"d_18" => Some(hash("d_18")),
"d_19" => Some(hash("d_19")),
"d_2" => Some(hash("d_2")),
"d_20" => Some(hash("d_20")),
"d_21" => Some(hash("d_21")),
"d_22" => Some(hash("d_22")),
"d_23" => Some(hash("d_23")),
"d_24" => Some(hash("d_24")),
"d_25" => Some(hash("d_25")),
"d_26" => Some(hash("d_26")),
"d_27" => Some(hash("d_27")),
"d_28" => Some(hash("d_28")),
"d_29" => Some(hash("d_29")),
"d_3" => Some(hash("d_3")),
"d_30" => Some(hash("d_30")),
"d_31" => Some(hash("d_31")),
"d_32" => Some(hash("d_32")),
"d_33" => Some(hash("d_33")),
"d_34" => Some(hash("d_34")),
"d_35" => Some(hash("d_35")),
"d_36" => Some(hash("d_36")),
"d_37" => Some(hash("d_37")),
"d_38" => Some(hash("d_38")),
"d_39" => Some(hash("d_39")),
"d_4" => Some(hash("d_4")),
"d_40" => Some(hash("d_40")),
"d_41" => Some(hash("d_41")),
"d_42" => Some(hash("d_42")),
"d_43" => Some(hash("d_43")),
"d_44" => Some(hash("d_44")),
"d_45" => Some(hash("d_45")),
"d_46" => Some(hash("d_46")),
"d_47" => Some(hash("d_47")),
"d_48" => Some(hash("d_48")),
"d_5" => Some(hash("d_5")),
"d_6" => Some(hash("d_6")),
"d_7" => Some(hash("d_7")),
"d_8" => Some(hash("d_8")),
"d_9" => Some(hash("d_9")),
"d_continuum" => Some(hash("d_continuum")),
"d_total" => Some(hash("d_total")),
"da" => Some(hash("da")),
"damage" => Some(hash("damage")),
"decay" => Some(hash("decay")),
"decay_14c" => Some(hash("decay_14c")),
"decay_2bminus" => Some(hash("decay_2bminus")),
"decay_2bplus" => Some(hash("decay_2bplus")),
"decay_2ec" => Some(hash("decay_2ec")),
"disappearance" => Some(hash("disappearance")),
"ec" => Some(hash("ec")),
"ec_2p" => Some(hash("ec_2p")),
"ec_3p" => Some(hash("ec_3p")),
"ec_bplus" => Some(hash("ec_bplus")),
"eca" => Some(hash("eca")),
"ecp" => Some(hash("ecp")),
"elastic" => Some(hash("elastic")),
"energy_per_fission" => Some(hash("energy_per_fission")),
"epsilon" => Some(hash("epsilon")),
"erel_2a" => Some(hash("erel_2a")),
"erel_2n" => Some(hash("erel_2n")),
"erel_2n2a" => Some(hash("erel_2n2a")),
"erel_2na" => Some(hash("erel_2na")),
"erel_2nd" => Some(hash("erel_2nd")),
"erel_2np" => Some(hash("erel_2np")),
"erel_2p" => Some(hash("erel_2p")),
"erel_3a" => Some(hash("erel_3a")),
"erel_3n" => Some(hash("erel_3n")),
"erel_3na" => Some(hash("erel_3na")),
"erel_3np" => Some(hash("erel_3np")),
"erel_4n" => Some(hash("erel_4n")),
"erel_He3" => Some(hash("erel_He3")),
"erel_a" => Some(hash("erel_a")),
"erel_absorption" => Some(hash("erel_absorption")),
"erel_continuum" => Some(hash("erel_continuum")),
"erel_d" => Some(hash("erel_d")),
"erel_d2a" => Some(hash("erel_d2a")),
"erel_da" => Some(hash("erel_da")),
"erel_disappearance" => Some(hash("erel_disappearance")),
"erel_elastic" => Some(hash("erel_elastic")),
"erel_fission" => Some(hash("erel_fission")),
"erel_fission_first" => Some(hash("erel_fission_first")),
"erel_fission_fourth" => Some(hash("erel_fission_fourth")),
"erel_fission_second" => Some(hash("erel_fission_second")),
"erel_fission_third" => Some(hash("erel_fission_third")),
"erel_gamma" => Some(hash("erel_gamma")),
"erel_misc" => Some(hash("erel_misc")),
"erel_n" => Some(hash("erel_n")),
"erel_n2a" => Some(hash("erel_n2a")),
"erel_n2p" => Some(hash("erel_n2p")),
"erel_n3a" => Some(hash("erel_n3a")),
"erel_nHe3" => Some(hash("erel_nHe3")),
"erel_n_0" => Some(hash("erel_n_0")),
"erel_n_1" => Some(hash("erel_n_1")),
"erel_n_10" => Some(hash("erel_n_10")),
"erel_n_11" => Some(hash("erel_n_11")),
"erel_n_12" => Some(hash("erel_n_12")),
"erel_n_13" => Some(hash("erel_n_13")),
"erel_n_14" => Some(hash("erel_n_14")),
"erel_n_15" => Some(hash("erel_n_15")),
"erel_n_16" => Some(hash("erel_n_16")),
"erel_n_17" => Some(hash("erel_n_17")),
"erel_n_18" => Some(hash("erel_n_18")),
"erel_n_19" => Some(hash("erel_n_19")),
"erel_n_2" => Some(hash("erel_n_2")),
"erel_n_20" => Some(hash("erel_n_20")),
"erel_n_21" => Some(hash("erel_n_21")),
"erel_n_22" => Some(hash("erel_n_22")),
"erel_n_23" => Some(hash("erel_n_23")),
"erel_n_24" => Some(hash("erel_n_24")),
"erel_n_25" => Some(hash("erel_n_25")),
"erel_n_26" => Some(hash("erel_n_26")),
"erel_n_27" => Some(hash("erel_n_27")),
"erel_n_28" => Some(hash("erel_n_28")),
"erel_n_29" => Some(hash("erel_n_29")),
"erel_n_3" => Some(hash("erel_n_3")),
"erel_n_30" => Some(hash("erel_n_30")),
"erel_n_31" => Some(hash("erel_n_31")),
"erel_n_32" => Some(hash("erel_n_32")),
"erel_n_33" => Some(hash("erel_n_33")),
"erel_n_34" => Some(hash("erel_n_34")),
"erel_n_35" => Some(hash("erel_n_35")),
"erel_n_36" => Some(hash("erel_n_36")),
"erel_n_37" => Some(hash("erel_n_37")),
"erel_n_38" => Some(hash("erel_n_38")),
"erel_n_39" => Some(hash("erel_n_39")),
"erel_n_4" => Some(hash("erel_n_4")),
"erel_n_40" => Some(hash("erel_n_40")),
"erel_n_5" => Some(hash("erel_n_5")),
"erel_n_6" => Some(hash("erel_n_6")),
"erel_n_7" => Some(hash("erel_n_7")),
"erel_n_8" => Some(hash("erel_n_8")),
"erel_n_9" => Some(hash("erel_n_9")),
"erel_n_continuum" => Some(hash("erel_n_continuum")),
"erel_na" => Some(hash("erel_na")),
"erel_nd" => Some(hash("erel_nd")),
"erel_nd3a" => Some(hash("erel_nd3a")),
"erel_nonelastic" => Some(hash("erel_nonelastic")),
"erel_np" => Some(hash("erel_np")),
"erel_npa" => Some(hash("erel_npa")),
"erel_nt" => Some(hash("erel_nt")),
"erel_nt2a" => Some(hash("erel_nt2a")),
"erel_p" => Some(hash("erel_p")),
"erel_pa" => Some(hash("erel_pa")),
"erel_pd" => Some(hash("erel_pd")),
"erel_pt" => Some(hash("erel_pt")),
"erel_t" => Some(hash("erel_t")),
"erel_t2a" => Some(hash("erel_t2a")),
"erel_total" => Some(hash("erel_total")),
"excitation_electroatomic" => Some(hash("excitation_electroatomic")),
"excited" => Some(hash("excited")),
"fission" => Some(hash("fission")),
"fission_first" => Some(hash("fission_first")),
"fission_fourth" => Some(hash("fission_fourth")),
"fission_product_yield_cumulative" => Some(hash("fission_product_yield_cumulative")),
"fission_product_yield_independent" => Some(hash("fission_product_yield_independent")),
"fission_second" => Some(hash("fission_second")),
"fission_third" => Some(hash("fission_third")),
"gamma" => Some(hash("gamma")),
"gamma_0" => Some(hash("gamma_0")),
"gamma_1" => Some(hash("gamma_1")),
"gamma_2" => Some(hash("gamma_2")),
"gamma_delayed" => Some(hash("gamma_delayed")),
"gamma_total" => Some(hash("gamma_total")),
"heading" => Some(hash("heading")),
"it" => Some(hash("it")),
"k_photoelectric" => Some(hash("k_photoelectric")),
"kaon0_long" => Some(hash("kaon0_long")),
"kaon0_short" => Some(hash("kaon0_short")),
"kaonm" => Some(hash("kaonm")),
"kaonp" => Some(hash("kaonp")),
"l1_photoelectric" => Some(hash("l1_photoelectric")),
"l2_photoelectric" => Some(hash("l2_photoelectric")),
"l3_photoelectric" => Some(hash("l3_photoelectric")),
"lumped_covar" => Some(hash("lumped_covar")),
"m1_photoelectric" => Some(hash("m1_photoelectric")),
"m2_photoelectric" => Some(hash("m2_photoelectric")),
"m3_photoelectric" => Some(hash("m3_photoelectric")),
"m4_photoelectric" => Some(hash("m4_photoelectric")),
"m5_photoelectric" => Some(hash("m5_photoelectric")),
"misc" => Some(hash("misc")),
"mubar" => Some(hash("mubar")),
"muonm" => Some(hash("muonm")),
"muonp" => Some(hash("muonp")),
"n" => Some(hash("n")),
"n1_photoelectric" => Some(hash("n1_photoelectric")),
"n2_photoelectric" => Some(hash("n2_photoelectric")),
"n2a" => Some(hash("n2a")),
"n2p" => Some(hash("n2p")),
"n3_photoelectric" => Some(hash("n3_photoelectric")),
"n3a" => Some(hash("n3a")),
"n4_photoelectric" => Some(hash("n4_photoelectric")),
"n5_photoelectric" => Some(hash("n5_photoelectric")),
"n6_photoelectric" => Some(hash("n6_photoelectric")),
"n7_photoelectric" => Some(hash("n7_photoelectric")),
"nHe3" => Some(hash("nHe3")),
"nHe3_0" => Some(hash("nHe3_0")),
"nHe3_1" => Some(hash("nHe3_1")),
"nHe3_2" => Some(hash("nHe3_2")),
"n_0" => Some(hash("n_0")),
"n_1" => Some(hash("n_1")),
"n_10" => Some(hash("n_10")),
"n_11" => Some(hash("n_11")),
"n_12" => Some(hash("n_12")),
"n_13" => Some(hash("n_13")),
"n_14" => Some(hash("n_14")),
"n_15" => Some(hash("n_15")),
"n_16" => Some(hash("n_16")),
"n_17" => Some(hash("n_17")),
"n_18" => Some(hash("n_18")),
"n_19" => Some(hash("n_19")),
"n_2" => Some(hash("n_2")),
"n_20" => Some(hash("n_20")),
"n_21" => Some(hash("n_21")),
"n_22" => Some(hash("n_22")),
"n_23" => Some(hash("n_23")),
"n_24" => Some(hash("n_24")),
"n_25" => Some(hash("n_25")),
"n_26" => Some(hash("n_26")),
"n_27" => Some(hash("n_27")),
"n_28" => Some(hash("n_28")),
"n_29" => Some(hash("n_29")),
"n_3" => Some(hash("n_3")),
"n_30" => Some(hash("n_30")),
"n_31" => Some(hash("n_31")),
"n_32" => Some(hash("n_32")),
"n_33" => Some(hash("n_33")),
"n_34" => Some(hash("n_34")),
"n_35" => Some(hash("n_35")),
"n_36" => Some(hash("n_36")),
"n_37" => Some(hash("n_37")),
"n_38" => Some(hash("n_38")),
"n_39" => Some(hash("n_39")),
"n_4" => Some(hash("n_4")),
"n_40" => Some(hash("n_40")),
"n_5" => Some(hash("n_5")),
"n_6" => Some(hash("n_6")),
"n_7" => Some(hash("n_7")),
"n_8" => Some(hash("n_8")),
"n_9" => Some(hash("n_9")),
"n_continuum" => Some(hash("n_continuum")),
"n_total" => Some(hash("n_total")),
"na" => Some(hash("na")),
"na_0" => Some(hash("na_0")),
"na_1" => Some(hash("na_1")),
"na_2" => Some(hash("na_2")),
"nd" => Some(hash("nd")),
"nd3a" => Some(hash("nd3a")),
"nd_0" => Some(hash("nd_0")),
"nd_1" => Some(hash("nd_1")),
"nd_2" => Some(hash("nd_2")),
"nonelastic" => Some(hash("nonelastic")),
"np" => Some(hash("np")),
"np_0" => Some(hash("np_0")),
"np_1" => Some(hash("np_1")),
"np_2" => Some(hash("np_2")),
"npa" => Some(hash("npa")),
"npd" => Some(hash("npd")),
"nt" => Some(hash("nt")),
"nt2a" => Some(hash("nt2a")),
"nt_0" => Some(hash("nt_0")),
"nt_1" => Some(hash("nt_1")),
"nt_2" => Some(hash("nt_2")),
"nubar" => Some(hash("nubar")),
"nubar_delayed" => Some(hash("nubar_delayed")),
"nubar_prompt" => Some(hash("nubar_prompt")),
"o1_photoelectric" => Some(hash("o1_photoelectric")),
"o2_photoelectric" => Some(hash("o2_photoelectric")),
"o3_photoelectric" => Some(hash("o3_photoelectric")),
"o4_photoelectric" => Some(hash("o4_photoelectric")),
"o5_photoelectric" => Some(hash("o5_photoelectric")),
"o6_photoelectric" => Some(hash("o6_photoelectric")),
"o7_photoelectric" => Some(hash("o7_photoelectric")),
"o8_photoelectric" => Some(hash("o8_photoelectric")),
"o9_photoelectric" => Some(hash("o9_photoelectric")),
"p" => Some(hash("p")),
"p10_photoelectric" => Some(hash("p10_photoelectric")),
"p11_photoelectric" => Some(hash("p11_photoelectric")),
"p1_photoelectric" => Some(hash("p1_photoelectric")),
"p2_photoelectric" => Some(hash("p2_photoelectric")),
"p3_photoelectric" => Some(hash("p3_photoelectric")),
"p4_photoelectric" => Some(hash("p4_photoelectric")),
"p5_photoelectric" => Some(hash("p5_photoelectric")),
"p6_photoelectric" => Some(hash("p6_photoelectric")),
"p7_photoelectric" => Some(hash("p7_photoelectric")),
"p8_photoelectric" => Some(hash("p8_photoelectric")),
"p9_photoelectric" => Some(hash("p9_photoelectric")),
"p_0" => Some(hash("p_0")),
"p_1" => Some(hash("p_1")),
"p_10" => Some(hash("p_10")),
"p_11" => Some(hash("p_11")),
"p_12" => Some(hash("p_12")),
"p_13" => Some(hash("p_13")),
"p_14" => Some(hash("p_14")),
"p_15" => Some(hash("p_15")),
"p_16" => Some(hash("p_16")),
"p_17" => Some(hash("p_17")),
"p_18" => Some(hash("p_18")),
"p_19" => Some(hash("p_19")),
"p_2" => Some(hash("p_2")),
"p_20" => Some(hash("p_20")),
"p_21" => Some(hash("p_21")),
"p_22" => Some(hash("p_22")),
"p_23" => Some(hash("p_23")),
"p_24" => Some(hash("p_24")),
"p_25" => Some(hash("p_25")),
"p_26" => Some(hash("p_26")),
"p_27" => Some(hash("p_27")),
"p_28" => Some(hash("p_28")),
"p_29" => Some(hash("p_29")),
"p_3" => Some(hash("p_3")),
"p_30" => Some(hash("p_30")),
"p_31" => Some(hash("p_31")),
"p_32" => Some(hash("p_32")),
"p_33" => Some(hash("p_33")),
"p_34" => Some(hash("p_34")),
"p_35" => Some(hash("p_35")),
"p_36" => Some(hash("p_36")),
"p_37" => Some(hash("p_37")),
"p_38" => Some(hash("p_38")),
"p_39" => Some(hash("p_39")),
"p_4" => Some(hash("p_4")),
"p_40" => Some(hash("p_40")),
"p_41" => Some(hash("p_41")),
"p_42" => Some(hash("p_42")),
"p_43" => Some(hash("p_43")),
"p_44" => Some(hash("p_44")),
"p_45" => Some(hash("p_45")),
"p_46" => Some(hash("p_46")),
"p_47" => Some(hash("p_47")),
"p_48" => Some(hash("p_48")),
"p_5" => Some(hash("p_5")),
"p_6" => Some(hash("p_6")),
"p_7" => Some(hash("p_7")),
"p_8" => Some(hash("p_8")),
"p_9" => Some(hash("p_9")),
"p_continuum" => Some(hash("p_continuum")),
"p_total" => Some(hash("p_total")),
"pa" => Some(hash("pa")),
"pair_prod" => Some(hash("pair_prod")),
"pair_prod_elec" => Some(hash("pair_prod_elec")),
"pair_prod_nuc" => Some(hash("pair_prod_nuc")),
"pd" => Some(hash("pd")),
"photoexcitation" => Some(hash("photoexcitation")),
"photon_coherent" => Some(hash("photon_coherent")),
"photon_incoherent" => Some(hash("photon_incoherent")),
"photon_total" => Some(hash("photon_total")),
"pion0" => Some(hash("pion0")),
"pionm" => Some(hash("pionm")),
"pionp" => Some(hash("pionp")),
"pt" => Some(hash("pt")),
"q1_photoelectric" => Some(hash("q1_photoelectric")),
"q2_photoelectric" => Some(hash("q2_photoelectric")),
"q3_photoelectric" => Some(hash("q3_photoelectric")),
"resonance_parameters" => Some(hash("resonance_parameters")),
"scattering" => Some(hash("scattering")),
"scattering_electroatomic" => Some(hash("scattering_electroatomic")),
"scattering_factor_imag" => Some(hash("scattering_factor_imag")),
"scattering_factor_real" => Some(hash("scattering_factor_real")),
"sf" => Some(hash("sf")),
"stopping_power" => Some(hash("stopping_power")),
"t" => Some(hash("t")),
"t2a" => Some(hash("t2a")),
"t_0" => Some(hash("t_0")),
"t_1" => Some(hash("t_1")),
"t_10" => Some(hash("t_10")),
"t_11" => Some(hash("t_11")),
"t_12" => Some(hash("t_12")),
"t_13" => Some(hash("t_13")),
"t_14" => Some(hash("t_14")),
"t_15" => Some(hash("t_15")),
"t_16" => Some(hash("t_16")),
"t_17" => Some(hash("t_17")),
"t_18" => Some(hash("t_18")),
"t_19" => Some(hash("t_19")),
"t_2" => Some(hash("t_2")),
"t_20" => Some(hash("t_20")),
"t_21" => Some(hash("t_21")),
"t_22" => Some(hash("t_22")),
"t_23" => Some(hash("t_23")),
"t_24" => Some(hash("t_24")),
"t_25" => Some(hash("t_25")),
"t_26" => Some(hash("t_26")),
"t_27" => Some(hash("t_27")),
"t_28" => Some(hash("t_28")),
"t_29" => Some(hash("t_29")),
"t_3" => Some(hash("t_3")),
"t_30" => Some(hash("t_30")),
"t_31" => Some(hash("t_31")),
"t_32" => Some(hash("t_32")),
"t_33" => Some(hash("t_33")),
"t_34" => Some(hash("t_34")),
"t_35" => Some(hash("t_35")),
"t_36" => Some(hash("t_36")),
"t_37" => Some(hash("t_37")),
"t_38" => Some(hash("t_38")),
"t_39" => Some(hash("t_39")),
"t_4" => Some(hash("t_4")),
"t_40" => Some(hash("t_40")),
"t_41" => Some(hash("t_41")),
"t_42" => Some(hash("t_42")),
"t_43" => Some(hash("t_43")),
"t_44" => Some(hash("t_44")),
"t_45" => Some(hash("t_45")),
"t_46" => Some(hash("t_46")),
"t_47" => Some(hash("t_47")),
"t_48" => Some(hash("t_48")),
"t_5" => Some(hash("t_5")),
"t_6" => Some(hash("t_6")),
"t_7" => Some(hash("t_7")),
"t_8" => Some(hash("t_8")),
"t_9" => Some(hash("t_9")),
"t_continuum" => Some(hash("t_continuum")),
"t_total" => Some(hash("t_total")),
"total" => Some(hash("total")),
"y" => Some(hash("y")),
"z_2a" => Some(hash("z_2a")),
"z_2n" => Some(hash("z_2n")),
"z_2n2a" => Some(hash("z_2n2a")),
"z_2n_0" => Some(hash("z_2n_0")),
"z_2n_1" => Some(hash("z_2n_1")),
"z_2n_2" => Some(hash("z_2n_2")),
"z_2na" => Some(hash("z_2na")),
"z_2nd" => Some(hash("z_2nd")),
"z_2np" => Some(hash("z_2np")),
"z_2p" => Some(hash("z_2p")),
"z_2p_0" => Some(hash("z_2p_0")),
"z_2p_1" => Some(hash("z_2p_1")),
"z_2p_2" => Some(hash("z_2p_2")),
"z_3a" => Some(hash("z_3a")),
"z_3n" => Some(hash("z_3n")),
"z_3n_0" => Some(hash("z_3n_0")),
"z_3n_1" => Some(hash("z_3n_1")),
"z_3n_2" => Some(hash("z_3n_2")),
"z_3na" => Some(hash("z_3na")),
"z_3np" => Some(hash("z_3np")),
"z_4n" => Some(hash("z_4n")),
"z_4n_0" => Some(hash("z_4n_0")),
"z_4n_1" => Some(hash("z_4n_1")),
_ => None,
}
}
fn alt_id(name: &str) -> Option<u32> {
match name {
"*" => Some(hash("excited")),
"14c" => Some(hash("decay_14c")),
"2b+" => Some(hash("decay_2bplus")),
"2b-" => Some(hash("decay_2bminus")),
"2ec" => Some(hash("decay_2ec")),
"2n" => Some(hash("z_2n")),
"2p" => Some(hash("z_2p")),
"3HE" => Some(hash("He3")),
"3He" => Some(hash("He3")),
"3h" => Some(hash("t")),
"3he" => Some(hash("He3")),
"HE-3" => Some(hash("He3")),
"HE3" => Some(hash("He3")),
"abs" => Some(hash("absorption")),
"alpha" => Some(hash("a")),
"b+" => Some(hash("bplus")),
"b+2p" => Some(hash("bplus_2p")),
"b+3p" => Some(hash("bplus_3p")),
"b+a" => Some(hash("bplus_a")),
"b+p" => Some(hash("bplus_p")),
"b-" => Some(hash("bminus")),
"b-2n" => Some(hash("bminus_2n")),
"b-3n" => Some(hash("bminus_3n")),
"b-4n" => Some(hash("bminus_4n")),
"b-a" => Some(hash("bminus_a")),
"b-n" => Some(hash("bminus_n")),
"b-p" => Some(hash("bminus_p")),
"b-sf" => Some(hash("bminus_sf")),
"deut" => Some(hash("d")),
"deuterium" => Some(hash("d")),
"deuteron" => Some(hash("d")),
"e" => Some(hash("elastic")),
"ec+b+" => Some(hash("ec_bplus")),
"ec2p" => Some(hash("ec_2p")),
"ec3p" => Some(hash("ec_3p")),
"elas" => Some(hash("elastic")),
"fis" => Some(hash("fission")),
"fiss" => Some(hash("fission")),
"g" => Some(hash("it")),
"h" => Some(hash("He3")),
"he-3" => Some(hash("He3")),
"he3" => Some(hash("He3")),
"i" => Some(hash("n")),
"inel" => Some(hash("n")),
"inelastic" => Some(hash("n")),
"proton" => Some(hash("p")),
"s" => Some(hash("scattering")),
"scat" => Some(hash("scattering")),
"tot" => Some(hash("total")),
"trit" => Some(hash("t")),
"tritium" => Some(hash("t")),
"triton" => Some(hash("t")),
_ => None,
}
}
pub fn name_to_id(spec: &str) -> Result<u32, Error> {
if let Some(id) = canonical_id(spec).or_else(|| alt_id(spec)) {
return Ok(id);
}
if !spec.is_empty() && spec.bytes().all(|b| b.is_ascii_digit()) {
if let Ok(n) = spec.parse::<u32>() {
if id_to_name(n).is_some() {
return Ok(n);
}
}
if let Ok(n) = spec.parse::<i32>() {
return mt_to_id(n);
}
}
Err(Error::NotAReaction(spec.to_string()))
}
#[must_use]
pub fn id_to_name(id: u32) -> Option<&'static str> {
reaction(id).map(|r| r.name)
}
pub fn mt_to_id(mt: i32) -> Result<u32, Error> {
REACTIONS
.iter()
.find(|r| r.mt > 0 && r.mt == mt)
.map(|r| r.id)
.ok_or(Error::UnknownMt(mt))
}
#[must_use]
pub fn id_to_mt(id: u32) -> i32 {
reaction(id).map_or(0, |r| r.mt)
}
#[must_use]
pub fn label(id: u32) -> &'static str {
reaction(id).map_or("", |r| r.label)
}
#[must_use]
pub fn doc(id: u32) -> &'static str {
reaction(id).map_or("", |r| r.doc)
}
#[must_use]
pub fn reaction(id: u32) -> Option<&'static Reaction> {
REACTIONS
.binary_search_by_key(&id, |r| r.id)
.ok()
.map(|i| &REACTIONS[i])
}
pub type NucDelta = (i32, i32, i32);
const fn unpack_offset(diff: i64) -> NucDelta {
let r = diff.rem_euclid(10_000);
let ds = if r < 5_000 { r } else { r - 10_000 };
let combined = (diff - ds).div_euclid(10_000);
let da_raw = combined.rem_euclid(1_000);
let da = if da_raw < 500 { da_raw } else { da_raw - 1_000 };
let dz = (combined - da).div_euclid(1_000);
(dz as i32, da as i32, ds as i32)
}
static OFFSET_ID: [(Projectile, NucDelta, u32); 138] = [
(Projectile::Neutron, (-6, -12, 0), hash("n3a")),
(Projectile::Neutron, (-6, -11, 0), hash("z_3a")),
(Projectile::Neutron, (-5, -10, 0), hash("t2a")),
(Projectile::Neutron, (-4, -9, 0), hash("z_2n2a")),
(Projectile::Neutron, (-4, -8, 0), hash("n2a")),
(Projectile::Neutron, (-4, -7, 0), hash("z_2a")),
(Projectile::Neutron, (-3, -5, 0), hash("da")),
(Projectile::Neutron, (-3, -4, 0), hash("pa")),
(Projectile::Neutron, (-2, -6, 0), hash("z_3na")),
(Projectile::Neutron, (-2, -5, 0), hash("z_2na")),
(Projectile::Neutron, (-2, -4, 0), hash("na")),
(Projectile::Neutron, (-2, -4, 1), hash("na_1")),
(Projectile::Neutron, (-2, -4, 2), hash("na_2")),
(Projectile::Neutron, (-2, -3, 0), hash("a")),
(Projectile::Neutron, (-2, -3, 1), hash("a_1")),
(Projectile::Neutron, (-2, -3, 2), hash("a_2")),
(Projectile::Neutron, (-2, -2, 0), hash("He3")),
(Projectile::Neutron, (-2, -2, 1), hash("He3_1")),
(Projectile::Neutron, (-2, -2, 2), hash("He3_2")),
(Projectile::Neutron, (-2, -1, 0), hash("z_2p")),
(Projectile::Neutron, (-2, -1, 1), hash("z_2p_1")),
(Projectile::Neutron, (-2, -1, 2), hash("z_2p_2")),
(Projectile::Neutron, (-1, -3, 0), hash("nt")),
(Projectile::Neutron, (-1, -3, 1), hash("nt_1")),
(Projectile::Neutron, (-1, -3, 2), hash("nt_2")),
(Projectile::Neutron, (-1, -2, 0), hash("t")),
(Projectile::Neutron, (-1, -2, 1), hash("t_1")),
(Projectile::Neutron, (-1, -2, 2), hash("t_2")),
(Projectile::Neutron, (-1, -1, 0), hash("d")),
(Projectile::Neutron, (-1, -1, 1), hash("d_1")),
(Projectile::Neutron, (-1, -1, 2), hash("d_2")),
(Projectile::Neutron, (-1, 0, 0), hash("p")),
(Projectile::Neutron, (-1, 0, 1), hash("p_1")),
(Projectile::Neutron, (-1, 0, 2), hash("p_2")),
(Projectile::Neutron, (0, -3, 0), hash("z_4n")),
(Projectile::Neutron, (0, -3, 1), hash("z_4n_1")),
(Projectile::Neutron, (0, -2, 0), hash("z_3n")),
(Projectile::Neutron, (0, -2, 1), hash("z_3n_1")),
(Projectile::Neutron, (0, -2, 2), hash("z_3n_2")),
(Projectile::Neutron, (0, -1, 0), hash("z_2n")),
(Projectile::Neutron, (0, -1, 1), hash("z_2n_1")),
(Projectile::Neutron, (0, -1, 2), hash("z_2n_2")),
(Projectile::Neutron, (0, 0, 0), hash("scattering")),
(Projectile::Neutron, (0, 0, 1), hash("n_1")),
(Projectile::Neutron, (0, 0, 2), hash("n_2")),
(Projectile::Neutron, (0, 1, 0), hash("absorption")),
(Projectile::Neutron, (0, 1, 1), hash("gamma_1")),
(Projectile::Neutron, (0, 1, 2), hash("gamma_2")),
(Projectile::Proton, (-1, -3, 0), hash("a")),
(Projectile::Proton, (-1, -2, 0), hash("He3")),
(Projectile::Proton, (-1, -1, 0), hash("z_2p")),
(Projectile::Proton, (0, -2, 0), hash("t")),
(Projectile::Proton, (0, -1, 0), hash("d")),
(Projectile::Proton, (0, 0, 0), hash("scattering")),
(Projectile::Proton, (1, -3, 0), hash("z_4n")),
(Projectile::Proton, (1, -2, 0), hash("z_3n")),
(Projectile::Proton, (1, -1, 0), hash("z_2n")),
(Projectile::Proton, (1, 0, 0), hash("n")),
(Projectile::Proton, (1, 1, 0), hash("absorption")),
(Projectile::Deuteron, (-1, -2, 0), hash("a")),
(Projectile::Deuteron, (-1, -1, 0), hash("He3")),
(Projectile::Deuteron, (-1, 0, 0), hash("z_2p")),
(Projectile::Deuteron, (0, -1, 0), hash("t")),
(Projectile::Deuteron, (0, 0, 0), hash("scattering")),
(Projectile::Deuteron, (0, 1, 0), hash("p")),
(Projectile::Deuteron, (1, -2, 0), hash("z_4n")),
(Projectile::Deuteron, (1, -1, 0), hash("z_3n")),
(Projectile::Deuteron, (1, 0, 0), hash("z_2n")),
(Projectile::Deuteron, (1, 1, 0), hash("n")),
(Projectile::Deuteron, (1, 2, 0), hash("absorption")),
(Projectile::Triton, (-1, -1, 0), hash("a")),
(Projectile::Triton, (-1, 0, 0), hash("He3")),
(Projectile::Triton, (-1, 1, 0), hash("z_2p")),
(Projectile::Triton, (0, 0, 0), hash("scattering")),
(Projectile::Triton, (0, 1, 0), hash("d")),
(Projectile::Triton, (0, 2, 0), hash("p")),
(Projectile::Triton, (1, -1, 0), hash("z_4n")),
(Projectile::Triton, (1, 0, 0), hash("z_3n")),
(Projectile::Triton, (1, 1, 0), hash("z_2n")),
(Projectile::Triton, (1, 2, 0), hash("n")),
(Projectile::Triton, (1, 3, 0), hash("absorption")),
(Projectile::Helion3, (0, -1, 0), hash("a")),
(Projectile::Helion3, (0, 0, 0), hash("scattering")),
(Projectile::Helion3, (0, 1, 0), hash("z_2p")),
(Projectile::Helion3, (1, 0, 0), hash("t")),
(Projectile::Helion3, (1, 1, 0), hash("d")),
(Projectile::Helion3, (1, 2, 0), hash("p")),
(Projectile::Helion3, (2, -1, 0), hash("z_4n")),
(Projectile::Helion3, (2, 0, 0), hash("z_3n")),
(Projectile::Helion3, (2, 1, 0), hash("z_2n")),
(Projectile::Helion3, (2, 2, 0), hash("n")),
(Projectile::Helion3, (2, 3, 0), hash("absorption")),
(Projectile::Alpha, (0, 0, 0), hash("scattering")),
(Projectile::Alpha, (0, 1, 0), hash("He3")),
(Projectile::Alpha, (0, 2, 0), hash("z_2p")),
(Projectile::Alpha, (1, 1, 0), hash("t")),
(Projectile::Alpha, (1, 2, 0), hash("d")),
(Projectile::Alpha, (1, 3, 0), hash("p")),
(Projectile::Alpha, (2, 0, 0), hash("z_4n")),
(Projectile::Alpha, (2, 1, 0), hash("z_3n")),
(Projectile::Alpha, (2, 2, 0), hash("z_2n")),
(Projectile::Alpha, (2, 3, 0), hash("n")),
(Projectile::Alpha, (2, 4, 0), hash("absorption")),
(Projectile::Gamma, (-2, -4, 0), hash("a")),
(Projectile::Gamma, (-2, -3, 0), hash("He3")),
(Projectile::Gamma, (-2, -2, 0), hash("z_2p")),
(Projectile::Gamma, (-1, -3, 0), hash("t")),
(Projectile::Gamma, (-1, -2, 0), hash("d")),
(Projectile::Gamma, (-1, -1, 0), hash("p")),
(Projectile::Gamma, (0, -4, 0), hash("z_4n")),
(Projectile::Gamma, (0, -3, 0), hash("z_3n")),
(Projectile::Gamma, (0, -2, 0), hash("z_2n")),
(Projectile::Gamma, (0, -1, 0), hash("n")),
(Projectile::Decay, (-6, -14, 0), hash("decay_14c")),
(Projectile::Decay, (-4, -3, 0), hash("bplus_3p")),
(Projectile::Decay, (-3, -4, 0), hash("bplus_a")),
(Projectile::Decay, (-3, -2, 0), hash("bplus_2p")),
(Projectile::Decay, (-2, -4, 0), hash("a")),
(Projectile::Decay, (-2, -3, 0), hash("He3")),
(Projectile::Decay, (-2, -2, 0), hash("z_2p")),
(Projectile::Decay, (-2, -1, 0), hash("bplus_p")),
(Projectile::Decay, (-2, 0, 0), hash("decay_2bplus")),
(Projectile::Decay, (-1, -4, 0), hash("bminus_a")),
(Projectile::Decay, (-1, -3, 0), hash("t")),
(Projectile::Decay, (-1, -2, 0), hash("d")),
(Projectile::Decay, (-1, -1, 0), hash("p")),
(Projectile::Decay, (-1, 0, 0), hash("bplus")),
(Projectile::Decay, (0, -4, 0), hash("z_4n")),
(Projectile::Decay, (0, -3, 0), hash("z_3n")),
(Projectile::Decay, (0, -2, 0), hash("z_2n")),
(Projectile::Decay, (0, -1, 0), hash("n")),
(Projectile::Decay, (0, 0, 0), hash("it")),
(Projectile::Decay, (1, -4, 0), hash("bminus_4n")),
(Projectile::Decay, (1, -3, 0), hash("bminus_3n")),
(Projectile::Decay, (1, -2, 0), hash("bminus_2n")),
(Projectile::Decay, (1, -1, 0), hash("bminus_n")),
(Projectile::Decay, (1, 0, 0), hash("bminus")),
(Projectile::Decay, (2, 0, 0), hash("decay_2bminus")),
];
static ID_OFFSET: [(Projectile, u32, NucDelta); 164] = [
(Projectile::Neutron, hash("a"), (-2, -3, 0)),
(Projectile::Neutron, hash("d"), (-1, -1, 0)),
(Projectile::Neutron, hash("n"), (0, 0, 0)),
(Projectile::Neutron, hash("p"), (-1, 0, 0)),
(Projectile::Neutron, hash("t"), (-1, -2, 0)),
(Projectile::Neutron, hash("da"), (-3, -5, 0)),
(Projectile::Neutron, hash("pt"), (-2, -3, 0)),
(Projectile::Neutron, hash("pa"), (-3, -4, 0)),
(Projectile::Neutron, hash("pd"), (-2, -2, 0)),
(Projectile::Neutron, hash("nd"), (-1, -2, 0)),
(Projectile::Neutron, hash("na"), (-2, -4, 0)),
(Projectile::Neutron, hash("nt"), (-1, -3, 0)),
(Projectile::Neutron, hash("np"), (-1, -1, 0)),
(Projectile::Neutron, hash("a_2"), (-2, -3, 2)),
(Projectile::Neutron, hash("a_1"), (-2, -3, 1)),
(Projectile::Neutron, hash("d_2"), (-1, -1, 2)),
(Projectile::Neutron, hash("d_1"), (-1, -1, 1)),
(Projectile::Neutron, hash("p_2"), (-1, 0, 2)),
(Projectile::Neutron, hash("p_1"), (-1, 0, 1)),
(Projectile::Neutron, hash("n3a"), (-6, -12, 0)),
(Projectile::Neutron, hash("n2p"), (-2, -2, 0)),
(Projectile::Neutron, hash("n2a"), (-4, -8, 0)),
(Projectile::Neutron, hash("n_1"), (0, 0, 1)),
(Projectile::Neutron, hash("n_2"), (0, 0, 2)),
(Projectile::Neutron, hash("npa"), (-3, -5, 0)),
(Projectile::Neutron, hash("t_2"), (-1, -2, 2)),
(Projectile::Neutron, hash("t_1"), (-1, -2, 1)),
(Projectile::Neutron, hash("t2a"), (-5, -10, 0)),
(Projectile::Neutron, hash("He3"), (-2, -2, 0)),
(Projectile::Neutron, hash("nHe3"), (-2, -3, 0)),
(Projectile::Neutron, hash("nd_1"), (-1, -2, 1)),
(Projectile::Neutron, hash("nd_2"), (-1, -2, 2)),
(Projectile::Neutron, hash("na_1"), (-2, -4, 1)),
(Projectile::Neutron, hash("na_2"), (-2, -4, 2)),
(Projectile::Neutron, hash("nt_1"), (-1, -3, 1)),
(Projectile::Neutron, hash("nt_2"), (-1, -3, 2)),
(Projectile::Neutron, hash("np_1"), (-1, -1, 1)),
(Projectile::Neutron, hash("np_2"), (-1, -1, 2)),
(Projectile::Neutron, hash("z_4n"), (0, -3, 0)),
(Projectile::Neutron, hash("z_2p"), (-2, -1, 0)),
(Projectile::Neutron, hash("z_2a"), (-4, -7, 0)),
(Projectile::Neutron, hash("z_2n"), (0, -1, 0)),
(Projectile::Neutron, hash("z_3a"), (-6, -11, 0)),
(Projectile::Neutron, hash("z_3n"), (0, -2, 0)),
(Projectile::Neutron, hash("nHe3_2"), (-2, -3, 2)),
(Projectile::Neutron, hash("nHe3_1"), (-2, -3, 2)),
(Projectile::Neutron, hash("z_4n_1"), (0, -3, 1)),
(Projectile::Neutron, hash("z_2p_1"), (-2, -1, 1)),
(Projectile::Neutron, hash("z_2p_2"), (-2, -1, 2)),
(Projectile::Neutron, hash("z_2n_2"), (0, -1, 2)),
(Projectile::Neutron, hash("z_2n_1"), (0, -1, 1)),
(Projectile::Neutron, hash("z_2n2a"), (-4, -9, 0)),
(Projectile::Neutron, hash("z_3n_2"), (0, -2, 2)),
(Projectile::Neutron, hash("z_3n_1"), (0, -2, 1)),
(Projectile::Neutron, hash("gamma"), (0, 1, 0)),
(Projectile::Neutron, hash("z_2np"), (-1, -2, 0)),
(Projectile::Neutron, hash("z_2na"), (-2, -5, 0)),
(Projectile::Neutron, hash("z_2nd"), (-1, -3, 0)),
(Projectile::Neutron, hash("z_3np"), (-1, -3, 0)),
(Projectile::Neutron, hash("z_3na"), (-2, -6, 0)),
(Projectile::Neutron, hash("He3_1"), (-2, -2, 1)),
(Projectile::Neutron, hash("He3_2"), (-2, -2, 2)),
(Projectile::Neutron, hash("gamma_1"), (0, 1, 1)),
(Projectile::Neutron, hash("gamma_2"), (0, 1, 2)),
(Projectile::Neutron, hash("scattering"), (0, 0, 0)),
(Projectile::Neutron, hash("absorption"), (0, 1, 0)),
(Projectile::Proton, hash("a"), (-1, -3, 0)),
(Projectile::Proton, hash("d"), (0, -1, 0)),
(Projectile::Proton, hash("n"), (1, 0, 0)),
(Projectile::Proton, hash("t"), (0, -2, 0)),
(Projectile::Proton, hash("He3"), (-1, -2, 0)),
(Projectile::Proton, hash("z_4n"), (1, -3, 0)),
(Projectile::Proton, hash("z_2p"), (-1, -1, 0)),
(Projectile::Proton, hash("z_2n"), (1, -1, 0)),
(Projectile::Proton, hash("z_3n"), (1, -2, 0)),
(Projectile::Proton, hash("scattering"), (0, 0, 0)),
(Projectile::Proton, hash("absorption"), (1, 1, 0)),
(Projectile::Deuteron, hash("a"), (-1, -2, 0)),
(Projectile::Deuteron, hash("n"), (1, 1, 0)),
(Projectile::Deuteron, hash("p"), (0, 1, 0)),
(Projectile::Deuteron, hash("t"), (0, -1, 0)),
(Projectile::Deuteron, hash("He3"), (-1, -1, 0)),
(Projectile::Deuteron, hash("z_4n"), (1, -2, 0)),
(Projectile::Deuteron, hash("z_2p"), (-1, 0, 0)),
(Projectile::Deuteron, hash("z_2n"), (1, 0, 0)),
(Projectile::Deuteron, hash("z_3n"), (1, -1, 0)),
(Projectile::Deuteron, hash("scattering"), (0, 0, 0)),
(Projectile::Deuteron, hash("absorption"), (1, 2, 0)),
(Projectile::Triton, hash("a"), (-1, -1, 0)),
(Projectile::Triton, hash("d"), (0, 1, 0)),
(Projectile::Triton, hash("n"), (1, 2, 0)),
(Projectile::Triton, hash("p"), (0, 2, 0)),
(Projectile::Triton, hash("He3"), (-1, 0, 0)),
(Projectile::Triton, hash("z_4n"), (1, -1, 0)),
(Projectile::Triton, hash("z_2p"), (-1, 1, 0)),
(Projectile::Triton, hash("z_2n"), (1, 1, 0)),
(Projectile::Triton, hash("z_3n"), (1, 0, 0)),
(Projectile::Triton, hash("scattering"), (0, 0, 0)),
(Projectile::Triton, hash("absorption"), (1, 3, 0)),
(Projectile::Helion3, hash("a"), (0, -1, 0)),
(Projectile::Helion3, hash("d"), (1, 1, 0)),
(Projectile::Helion3, hash("n"), (2, 2, 0)),
(Projectile::Helion3, hash("p"), (1, 2, 0)),
(Projectile::Helion3, hash("t"), (1, 0, 0)),
(Projectile::Helion3, hash("z_4n"), (2, -1, 0)),
(Projectile::Helion3, hash("z_2p"), (0, 1, 0)),
(Projectile::Helion3, hash("z_2n"), (2, 1, 0)),
(Projectile::Helion3, hash("z_3n"), (2, 0, 0)),
(Projectile::Helion3, hash("scattering"), (0, 0, 0)),
(Projectile::Helion3, hash("absorption"), (2, 3, 0)),
(Projectile::Alpha, hash("d"), (1, 2, 0)),
(Projectile::Alpha, hash("n"), (2, 3, 0)),
(Projectile::Alpha, hash("p"), (1, 3, 0)),
(Projectile::Alpha, hash("t"), (1, 1, 0)),
(Projectile::Alpha, hash("He3"), (0, 1, 0)),
(Projectile::Alpha, hash("z_4n"), (2, 0, 0)),
(Projectile::Alpha, hash("z_2p"), (0, 2, 0)),
(Projectile::Alpha, hash("z_2n"), (2, 2, 0)),
(Projectile::Alpha, hash("z_3n"), (2, 1, 0)),
(Projectile::Alpha, hash("scattering"), (0, 0, 0)),
(Projectile::Alpha, hash("absorption"), (2, 4, 0)),
(Projectile::Gamma, hash("a"), (-2, -4, 0)),
(Projectile::Gamma, hash("d"), (-1, -2, 0)),
(Projectile::Gamma, hash("n"), (0, -1, 0)),
(Projectile::Gamma, hash("p"), (-1, -1, 0)),
(Projectile::Gamma, hash("t"), (-1, -3, 0)),
(Projectile::Gamma, hash("He3"), (-2, -3, 0)),
(Projectile::Gamma, hash("z_4n"), (0, -4, 0)),
(Projectile::Gamma, hash("z_2p"), (-2, -2, 0)),
(Projectile::Gamma, hash("z_2n"), (0, -2, 0)),
(Projectile::Gamma, hash("z_3n"), (0, -3, 0)),
(Projectile::Decay, hash("a"), (-2, -4, 0)),
(Projectile::Decay, hash("d"), (-1, -2, 0)),
(Projectile::Decay, hash("n"), (0, -1, 0)),
(Projectile::Decay, hash("p"), (-1, -1, 0)),
(Projectile::Decay, hash("t"), (-1, -3, 0)),
(Projectile::Decay, hash("ec"), (-1, 0, 0)),
(Projectile::Decay, hash("it"), (0, 0, 0)),
(Projectile::Decay, hash("eca"), (-3, -4, 0)),
(Projectile::Decay, hash("ecp"), (-2, -1, 0)),
(Projectile::Decay, hash("He3"), (-2, -3, 0)),
(Projectile::Decay, hash("z_4n"), (0, -4, 0)),
(Projectile::Decay, hash("z_2p"), (-2, -2, 0)),
(Projectile::Decay, hash("z_2n"), (0, -2, 0)),
(Projectile::Decay, hash("z_3n"), (0, -3, 0)),
(Projectile::Decay, hash("bplus_3p"), (-4, -3, 0)),
(Projectile::Decay, hash("bplus_2p"), (-3, -2, 0)),
(Projectile::Decay, hash("ec_2p"), (-3, -2, 0)),
(Projectile::Decay, hash("ec_3p"), (-4, -3, 0)),
(Projectile::Decay, hash("bplus"), (-1, 0, 0)),
(Projectile::Decay, hash("bminus_p"), (0, -1, 0)),
(Projectile::Decay, hash("bminus_a"), (-1, -4, 0)),
(Projectile::Decay, hash("bminus_n"), (1, -1, 0)),
(Projectile::Decay, hash("decay_2ec"), (-2, 0, 0)),
(Projectile::Decay, hash("decay_14c"), (-6, -14, 0)),
(Projectile::Decay, hash("bminus_3n"), (1, -3, 0)),
(Projectile::Decay, hash("bminus_4n"), (1, -4, 0)),
(Projectile::Decay, hash("bminus_2n"), (1, -2, 0)),
(Projectile::Decay, hash("decay_2bminus"), (2, 0, 0)),
(Projectile::Decay, hash("ec_bplus"), (-1, 0, 0)),
(Projectile::Decay, hash("decay_2bplus"), (-2, 0, 0)),
(Projectile::Decay, hash("bplus_a"), (-3, -4, 0)),
(Projectile::Decay, hash("bplus_p"), (-2, -1, 0)),
(Projectile::Decay, hash("bminus"), (1, 0, 0)),
];
fn offset_key(p: Projectile, d: NucDelta) -> (u8, i32, i32, i32) {
(p as u8, d.0, d.1, d.2)
}
pub fn id_from_nucdelta(
from_nucid: u32,
to_nucid: u32,
projectile: Projectile,
) -> Result<u32, Error> {
let delta = unpack_offset(i64::from(to_nucid) - i64::from(from_nucid));
let target = offset_key(projectile, delta);
OFFSET_ID
.binary_search_by(|(p, d, _)| offset_key(*p, *d).cmp(&target))
.ok()
.map(|i| OFFSET_ID[i].2)
.ok_or(Error::Indeterminate { projectile, delta })
}
fn nuc_delta(rx: u32, projectile: Projectile) -> Result<NucDelta, Error> {
ID_OFFSET
.binary_search_by(|(p, id, _)| (*p as u8, *id).cmp(&(projectile as u8, rx)))
.ok()
.map(|i| ID_OFFSET[i].2)
.ok_or(Error::UnknownOffset { projectile, id: rx })
}
fn shifted(base: NuclideId, packed: i64) -> Result<NuclideId, Error> {
decode_nucid(i64::from(base.nucid()) + packed)
}
fn decode_nucid(v: i64) -> Result<NuclideId, Error> {
let state = v.rem_euclid(10);
let rest = (v - state) / 10;
let zzaaam = rest / 1_000;
let a = zzaaam.rem_euclid(1_000);
let z = (zzaaam - a) / 1_000;
if v < 0 || !(1..=118).contains(&z) || a < z {
return Err(Error::BadNuclide(crate::Error::BadZ(z.max(0) as u32)));
}
NuclideId::new(z as u32, a as u32, state as u32).map_err(Error::BadNuclide)
}
fn groundstate(nuc: NuclideId) -> NuclideId {
NuclideId::from_nucid(nuc.nucid() - nuc.state())
}
pub fn child(parent: NuclideId, rx: u32, projectile: Projectile) -> Result<NuclideId, Error> {
let (dz, da, ds) = nuc_delta(rx, projectile)?;
let packed = i64::from(dz) * 10_000_000 + i64::from(da) * 10_000 + i64::from(ds);
shifted(groundstate(parent), packed)
}
pub fn parent(child_nuc: NuclideId, rx: u32, projectile: Projectile) -> Result<NuclideId, Error> {
let (dz, da, ds) = nuc_delta(rx, projectile)?;
let packed = i64::from(dz) * 10_000_000 + i64::from(da) * 10_000 + i64::from(ds);
decode_nucid(i64::from(child_nuc.nucid()) - packed)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::NuclideId;
const U235: u32 = 922_350_000;
#[test]
fn hash_matches_registry() {
assert_eq!(hash("total"), 1313192322);
assert_eq!(hash("a"), 1089);
assert_eq!(hash("hello"), 1298750498);
assert_eq!(hash("wowza"), 1318702964);
assert_eq!(hash("z_2na"), 1322647064);
assert_eq!(hash(""), 32);
}
#[test]
fn resolves_canonical_names() {
assert_eq!(name_to_id("fission"), Ok(hash("fission")));
assert_eq!(name_to_id("total"), Ok(hash("total")));
assert_eq!(name_to_id("a"), Ok(hash("a")));
assert_eq!(name_to_id("nHe3"), Ok(hash("nHe3")));
assert!(matches!(
name_to_id("Waka waka"),
Err(Error::NotAReaction(_))
));
assert!(matches!(name_to_id(""), Err(Error::NotAReaction(_))));
}
#[test]
fn resolves_alternate_names() {
assert_eq!(name_to_id("alpha"), Ok(hash("a")));
assert_eq!(name_to_id("tot"), Ok(hash("total")));
assert_eq!(name_to_id("fiss"), Ok(hash("fission")));
assert_eq!(name_to_id("inelastic"), Ok(hash("n")));
assert_eq!(name_to_id("b-"), Ok(hash("bminus")));
assert_eq!(name_to_id("*"), Ok(hash("excited")));
assert_eq!(name_to_id("14c"), Ok(hash("decay_14c")));
assert_eq!(name_to_id("3He"), Ok(hash("He3")));
assert_eq!(name_to_id("deuteron"), Ok(hash("d")));
}
#[test]
fn resolves_numeric_ids_and_mts() {
assert_eq!(name_to_id("107"), Ok(hash("a")));
assert_eq!(name_to_id("1"), Ok(hash("total")));
assert_eq!(name_to_id("1089"), Ok(hash("a")));
assert_eq!(name_to_id("1313192322"), Ok(hash("total")));
assert!(name_to_id("0").is_err());
assert!(name_to_id("9999999999").is_err());
assert!(matches!(name_to_id("1a"), Err(Error::NotAReaction(_))));
}
#[test]
fn registry_round_trips_every_name() {
assert_eq!(REACTIONS.len(), NUM_REACTIONS);
for rx in &REACTIONS {
assert_eq!(name_to_id(rx.name), Ok(rx.id));
assert_eq!(id_to_name(rx.id), Some(rx.name));
assert_eq!(reaction(rx.id), Some(rx));
}
assert_eq!(id_to_name(4_000_000_000), None);
}
#[test]
fn ids_unique_and_never_clash_with_mts() {
let mut ids: Vec<u32> = REACTIONS.iter().map(|r| r.id).collect();
ids.sort_unstable();
ids.dedup();
assert_eq!(ids.len(), NUM_REACTIONS);
assert!(!ids.iter().any(|id| *id < 1000));
}
#[test]
fn mt_mappings() {
assert_eq!(mt_to_id(107), Ok(hash("a")));
assert_eq!(mt_to_id(27), Ok(hash("absorption")));
assert_eq!(mt_to_id(18), Ok(hash("fission")));
assert_eq!(mt_to_id(103), Ok(hash("p")));
assert_eq!(mt_to_id(1), Ok(hash("total")));
assert!(matches!(mt_to_id(-1), Err(Error::UnknownMt(-1))));
assert!(matches!(mt_to_id(0), Err(Error::UnknownMt(0))));
assert_eq!(id_to_mt(hash("a")), 107);
assert_eq!(id_to_mt(hash("fission")), 18);
assert_eq!(id_to_mt(hash("scattering")), 0);
assert_eq!(id_to_mt(4_000_000_000), 0);
}
#[test]
fn labels_match_registry() {
assert_eq!(label(hash("a")), "(z,a)");
assert_eq!(label(hash("p")), "(z,p)");
assert_eq!(label(hash("total")), "(z,total)");
assert_eq!(label(hash("absorption")), "(z,abs) Absorption");
assert_eq!(label(hash("fission")), "(z,fission)");
assert_eq!(label(hash("fission_first")), "(z,f)");
assert_eq!(label(4_000_000_000), "");
}
#[test]
fn docs_populated() {
assert_eq!(doc(hash("total")), "(n,total) Neutron total");
assert_eq!(doc(hash("absorption")), "(n,abs) Absorption");
assert_eq!(doc(hash("a")), "(z,a) Production of alpha");
assert_eq!(doc(hash("fission")), "(z,fiss) Particle-induced fission");
assert_eq!(doc(hash("p")), "(z,p) Production of p");
assert_eq!(doc(4_000_000_000), "");
}
#[test]
fn nucdelta_resolves_by_projectile() {
assert_eq!(
id_from_nucdelta(U235, 922_360_000, Projectile::Neutron),
Ok(hash("absorption"))
);
assert_eq!(
id_from_nucdelta(U235, 912_350_000, Projectile::Neutron),
Ok(hash("p"))
);
assert_eq!(
id_from_nucdelta(U235, 932_360_000, Projectile::Proton),
Ok(hash("absorption"))
);
assert_eq!(
id_from_nucdelta(952_420_000, 962_420_000, Projectile::Decay),
Ok(hash("bminus"))
);
assert!(matches!(
id_from_nucdelta(U235, 922_360_000, Projectile::Gamma),
Err(Error::Indeterminate { .. })
));
assert!(matches!(
id_from_nucdelta(U235, 10010000, Projectile::Neutron),
Err(Error::Indeterminate { .. })
));
}
#[test]
fn child_applies_offset() {
let co58m = NuclideId::from_nucid(270_580_001);
assert_eq!(
child(co58m, hash("gamma"), Projectile::Neutron)
.unwrap()
.nucid(),
270_590_000
);
assert_eq!(
child(co58m, hash("gamma_1"), Projectile::Neutron)
.unwrap()
.nucid(),
270_590_001
);
let u235 = NuclideId::new(92, 235, 0).unwrap();
assert_eq!(
child(u235, hash("absorption"), Projectile::Neutron)
.unwrap()
.nucid(),
922_360_000
);
assert!(child(u235, hash("Waka"), Projectile::Neutron).is_err());
}
#[test]
fn parent_reverts_offset() {
let u236 = NuclideId::new(92, 236, 0).unwrap();
assert_eq!(
parent(u236, hash("absorption"), Projectile::Neutron)
.unwrap()
.nucid(),
922_350_000
);
let co59m1 = NuclideId::from_nucid(270_590_001);
assert_eq!(
parent(co59m1, hash("gamma_1"), Projectile::Neutron)
.unwrap()
.nucid(),
270_580_000
);
}
#[test]
fn projectile_flags_round_trip() {
assert_eq!(Projectile::from_flag("n"), Ok(Projectile::Neutron));
assert_eq!(Projectile::from_flag("He3"), Ok(Projectile::Helion3));
assert_eq!(Projectile::from_flag("gamma"), Ok(Projectile::Gamma));
assert_eq!(Projectile::from_flag("decay"), Ok(Projectile::Decay));
assert!(matches!(
Projectile::from_flag("muon"),
Err(Error::NotAReaction(_))
));
for p in [
Projectile::Neutron,
Projectile::Proton,
Projectile::Deuteron,
Projectile::Triton,
Projectile::Helion3,
Projectile::Alpha,
Projectile::Gamma,
Projectile::Decay,
] {
assert_eq!(Projectile::from_flag(p.flag()), Ok(p));
}
}
#[test]
fn error_display() {
assert_eq!(
Error::NotAReaction("waka".into()).to_string(),
"not a reaction: `waka`"
);
assert_eq!(
Error::UnknownMt(7).to_string(),
"no reaction carries MT number 7"
);
}
}