internal static unsafe collar_rec MoveCO(INCCSelector se, INCCAnalysisParams.INCCMethodDescriptor md) { INCCAnalysisParams.collar_combined_rec imr = (INCCAnalysisParams.collar_combined_rec)md; collar_rec m = new collar_rec(); byte[] b = new byte[INCC.MAX_ITEM_TYPE_LENGTH]; char[] a = se.material.ToCharArray(0, Math.Min(se.material.Length, INCC.MAX_ITEM_TYPE_LENGTH)); Encoding.ASCII.GetBytes(a, 0, a.Length, b, 0); TransferUtils.Copy(b, m.collar_item_type); m.col_a = imr.collar.cev.a; m.col_b = imr.collar.cev.b; m.col_c = imr.collar.cev.c; m.col_d = imr.collar.cev.d; m.collar_equation = (byte)imr.collar.cev.cal_curve_equation; m.col_covar_ab = imr.collar.cev.covar(Coeff.a, Coeff.b); m.col_covar_ac = imr.collar.cev.covar(Coeff.a, Coeff.c); m.col_covar_ad = imr.collar.cev.covar(Coeff.a, Coeff.d); m.col_covar_bc = imr.collar.cev.covar(Coeff.b, Coeff.c); m.col_covar_bd = imr.collar.cev.covar(Coeff.b, Coeff.d); m.col_covar_cd = imr.collar.cev.covar(Coeff.c, Coeff.d); m.col_var_a = imr.collar.cev.var_a; m.col_var_b = imr.collar.cev.var_b; m.col_var_c = imr.collar.cev.var_c; m.col_var_d = imr.collar.cev.var_d; m.col_sigma_x = imr.collar.cev.sigma_x; m.col_upper_mass_limit = imr.collar.cev.upper_mass_limit; m.col_lower_mass_limit = imr.collar.cev.lower_mass_limit; m.col_number_calib_rods = imr.collar.number_calib_rods; m.col_sample_corr_fact = imr.collar.sample_corr_fact.v; m.col_sample_corr_fact_err = imr.collar.sample_corr_fact.err; m.col_u_mass_corr_fact_a = imr.collar.u_mass_corr_fact_a.v; m.col_u_mass_corr_fact_a_err = imr.collar.u_mass_corr_fact_a.err; m.col_u_mass_corr_fact_b = imr.collar.u_mass_corr_fact_b.v; m.col_u_mass_corr_fact_b_err = imr.collar.u_mass_corr_fact_b.err; m.collar_mode = (byte)(imr.collar.collar_mode ? 1 : 0); byte[] bb = new byte[INCC.MAX_POISON_ROD_TYPES * INCC.MAX_ROD_TYPE_LENGTH]; int indx = 0; for (int i = 0; i < INCC.MAX_POISON_ROD_TYPES; i++) { if (string.IsNullOrEmpty(imr.collar.poison_rod_type[i])) { char[] aa = imr.collar.poison_rod_type[i].ToCharArray(0, Math.Min(imr.collar.poison_rod_type[i].Length, INCC.MAX_ROD_TYPE_LENGTH)); Encoding.ASCII.GetBytes(aa, 0, aa.Length, bb, indx); } indx += 2; } TransferUtils.Copy(bb, 0, m.col_poison_rod_type, 0, INCC.MAX_POISON_ROD_TYPES * INCC.MAX_ROD_TYPE_LENGTH); TransferUtils.CopyDbls(imr.collar.poison_absorption_fact, m.col_poison_absorption_fact); CopyTuples(imr.collar.poison_rod_a, m.col_poison_rod_a, m.col_poison_rod_a_err, INCC.MAX_POISON_ROD_TYPES); CopyTuples(imr.collar.poison_rod_b, m.col_poison_rod_b, m.col_poison_rod_b_err, INCC.MAX_POISON_ROD_TYPES); CopyTuples(imr.collar.poison_rod_c, m.col_poison_rod_c, m.col_poison_rod_c_err, INCC.MAX_POISON_ROD_TYPES); return m; }
unsafe void CollarParm(INCCAnalysisParams.collar_combined_rec combined, collar_rec collar, ushort bonk) { combined.collar = new INCCAnalysisParams.collar_rec(); combined.collar.cev.lower_mass_limit = collar.col_lower_mass_limit; combined.collar.cev.upper_mass_limit = collar.col_upper_mass_limit; combined.collar.cev.a = collar.col_a; combined.collar.cev.b = collar.col_b; combined.collar.cev.c = collar.col_c; combined.collar.cev.d = collar.col_d; combined.collar.cev.var_a = collar.col_var_a; combined.collar.cev.var_b = collar.col_var_b; combined.collar.cev.var_c = collar.col_var_c; combined.collar.cev.var_d = collar.col_var_d; combined.collar.cev.setcovar(Coeff.a, Coeff.b, collar.col_covar_ab); combined.collar.cev._covar[0, 2] = collar.col_covar_ac; combined.collar.cev._covar[0, 3] = collar.col_covar_ad; combined.collar.cev._covar[1, 2] = collar.col_covar_bc; combined.collar.cev._covar[1, 3] = collar.col_covar_bd; combined.collar.cev._covar[2, 3] = collar.col_covar_cd; combined.collar.cev.cal_curve_equation = (INCCAnalysisParams.CurveEquation)collar.collar_equation; combined.collar.cev.sigma_x = collar.col_sigma_x; combined.collar.poison_absorption_fact = TransferUtils.Copy(collar.col_poison_absorption_fact, INCC.MAX_POISON_ROD_TYPES); combined.collar.poison_rod_a = Copy(collar.col_poison_rod_a, collar.col_poison_rod_a_err, INCC.MAX_POISON_ROD_TYPES); combined.collar.poison_rod_b = Copy(collar.col_poison_rod_b, collar.col_poison_rod_b_err, INCC.MAX_POISON_ROD_TYPES); combined.collar.poison_rod_c = Copy(collar.col_poison_rod_c, collar.col_poison_rod_c_err, INCC.MAX_POISON_ROD_TYPES); combined.collar.collar_mode = (collar.collar_mode == 0 ? false : true); combined.collar.u_mass_corr_fact_a.v = collar.col_u_mass_corr_fact_a; combined.collar.u_mass_corr_fact_a.err = collar.col_u_mass_corr_fact_a_err; combined.collar.u_mass_corr_fact_b.v = collar.col_u_mass_corr_fact_b; combined.collar.u_mass_corr_fact_b.err = collar.col_u_mass_corr_fact_b_err; combined.collar.sample_corr_fact.v = collar.col_sample_corr_fact; combined.collar.sample_corr_fact.err = collar.col_sample_corr_fact_err; combined.collar.number_calib_rods = (int)collar.col_number_calib_rods; for (int i = 0; i < INCC.MAX_POISON_ROD_TYPES; i++) { int index = i * INCC.MAX_ROD_TYPE_LENGTH; combined.collar.poison_rod_type[i] = TransferUtils.str(collar.col_poison_rod_type + index, INCC.MAX_ROD_TYPE_LENGTH); } mlogger.TraceEvent(LogLevels.Verbose, 34213, " -- Collar params has mode {0} {1}", combined.collar.collar_mode, bonk); }