Exemplo n.º 1
0
            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;
            }
Exemplo n.º 2
0
        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);
        }