示例#1
0
        public static void editar(ComboBox Camara, ComboBox Electrometro, TextBox FactorCali, ComboBox SignoTension, TextBox Tension,
                                  ComboBox HazRef, TextBox TempRef, TextBox PresRef, TextBox HumRef, DateTime FechaCal, TextBox LaboCalibracion,
                                  int indice)
        {
            SistemaDosimetrico aux = lista()[indice];

            if (!Camara.Items.Contains(aux.camara))
            {
                Camara.Items.Add(aux.camara);
            }
            Camara.SelectedItem = aux.camara;
            if (!Electrometro.Items.Contains(aux.electrometro))
            {
                Electrometro.Items.Add(aux.electrometro);
            }
            Electrometro.SelectedItem = aux.electrometro;
            FactorCali.Text           = Convert.ToString(aux.FactorCalibracion);
            if (aux.SignoTension == 1)
            {
                SignoTension.SelectedItem = "+";
            }
            else
            {
                SignoTension.SelectedItem = "-";
            }
            Tension.Text         = Convert.ToString(aux.Tension);
            HazRef.SelectedItem  = aux.HazDeRef;
            TempRef.Text         = Convert.ToString(aux.TempRef);
            PresRef.Text         = Convert.ToString(aux.PresionRef);
            HumRef.Text          = Calcular.stringNaN(aux.HumedadRef);
            FechaCal             = Convert.ToDateTime(aux.FechaCalibracion);
            LaboCalibracion.Text = aux.LaboCalibracion;
        }
示例#2
0
        public static Analisis analizar2(BindingList <CalibracionElec> lista, Equipo equipo, EnergiaElectrones energia)
        {
            Analisis      analisis = new Analisis();
            List <Double> valores  = lista.Select(q => q.Dwzref).ToList();

            if (CalibracionElec.hayReferencia(equipo, energia))
            {
                CalibracionElec caliRef = CalibracionElec.obtenerCaliReferencia(equipo, energia);
                analisis.Referencia = ValorARF.crear(caliRef.Dwzref, caliRef.Dwzref, caliRef.Fecha);
            }
            else
            {
                analisis.Referencia = new ValorARF()
                {
                    absoluto = double.NaN,
                    relativo = double.NaN,
                    fecha    = "",
                };
            }
            analisis.Maximo   = ValorARF.crear(valores.Max(), analisis.Referencia.absoluto, (lista[valores.IndexOf(valores.Max())].Fecha));
            analisis.Minimo   = ValorARF.crear(valores.Min(), analisis.Referencia.absoluto, (lista[valores.IndexOf(valores.Min())].Fecha));
            analisis.Promedio = ValorARF.crear(Math.Round(valores.Average(), 2), analisis.Referencia.absoluto);
            analisis.DesvEst  = ValorARF.crear(Calcular.desvEstandar(valores), analisis.Referencia.absoluto);

            return(analisis);
        }
示例#3
0
        public static void editar(TextBox Energia, TextBox Zref, TextBox Lado, TextBox PDDZref, TextBox TMRZref, DataGridView DGV)
        {
            EnergiaFotones aux = lista(DGV)[DGV.SelectedRows[0].Index];

            Energia.Text = aux.Energia.ToString();
            Zref.Text    = Calcular.stringNaN(aux.ZRefFot);
            Lado.Text    = Calcular.stringNaN(aux.LadoCampo);
            PDDZref.Text = Calcular.stringNaN(aux.PddZrefFot);
            TMRZref.Text = Calcular.stringNaN(aux.TmrZrefFot);
        }
示例#4
0
 private void esNumeroTB(object sender, EventArgs e)
 {
     if (estaLleno((TextBox)sender))
     {
         if (!Calcular.esNumero(((TextBox)sender).Text))
         {
             MessageBox.Show("Debe ingresar un número");
             ((TextBox)sender).Focus(); ((TextBox)sender).SelectAll();
         }
     }
 }
示例#5
0
        public static void editar(TextBox Energia, TextBox R50Ion, TextBox Lado, Label R50D, Label Zref, TextBox PDDZref, DataGridView DGV)
        {
            EnergiaElectrones aux = lista(DGV)[DGV.SelectedRows[0].Index];

            Energia.Text = aux.Energia.ToString();
            R50Ion.Text  = Calcular.stringNaN(aux.R50ion);
            Lado.Text    = Calcular.stringNaN(aux.LadoCampo);
            R50D.Text    = Calcular.stringNaN(aux.R50D);
            Zref.Text    = Calcular.stringNaN(aux.Zref);
            PDDZref.Text = Calcular.stringNaN(aux.PDDZrefElec);
        }
示例#6
0
        private CalibracionFot calibracionActual()
        {
            double difConRef = Double.NaN;

            if (hayLBsinCartel())
            {
                difConRef = calculoDifConRef();
            }
            return(CalibracionFot.crear(equipoSeleccionado(), energiaSeleccionada(), sistDosimSeleccionado(), DFSoISO(), Calcular.validarYConvertirADouble(TB_CaliLadoCampo.Text),
                                        Calcular.validarYConvertirADouble(TB_CaliPRof.Text), DTP_FechaCaliFot.Value, realizadoPor(), calculoKTP(), calculoTPR2010(), calculokQQ0(), mideKqq0(), calculoKpol(), mideKpol(),
                                        Calcular.validarYConvertirADouble(TB_Vred.Text), calculoKs(), mideKs(), CalculoMref(), calculoDwRef(), calculoDwZmax(),
                                        Convert.ToDouble(TB_UM.Text), Convert.ToDouble(tbTemp.Text), Convert.ToDouble(tbPresion.Text), Convert.ToDouble(tbHumedad.Text),
                                        lecVmas(), lecVmenos(), lecVTotal(), lecVred(), lecRef(), lec20(), lec10(), TPRoD2010(), difConRef));
        }
示例#7
0
        public static double convertirTBaDouble(TextBox tb)
        {
            double salida = Double.NaN;

            if (estaLleno(tb))
            {
                salida = Calcular.validarYConvertirADouble(tb.Text);
                if (Double.IsNaN(salida))
                {
                    MessageBox.Show("Debe ingresar un número");
                    tb.Focus(); tb.SelectAll();
                }
            }
            return(salida);
        }
示例#8
0
 public static double calcularKqq0(double TPR2010, Camara camara, Equipo equipo, bool usarLB, EnergiaFotones energia, int DFSoISO)
 {
     if (equipo.Fuente == 1)
     {
         return(1);
     }
     else if (usarLB)
     {
         return(obtenerCaliReferencia(equipo, energia, DFSoISO).Kqq0);
     }
     else
     {
         return(Math.Round(Calcular.interpolarLinea(TPR2010, Tabla.TPR2010etiquetas, camara.kqq0Fot), 4));
     }
 }
示例#9
0
        public static double promediarPanel(Panel panel)
        {
            double promedio = Double.NaN; List <double> valores = new List <double>();

            foreach (TextBox tb in panel.Controls.OfType <TextBox>())
            {
                double aux = Double.NaN;
                aux = convertirTBaDouble(tb);
                if (!Double.IsNaN(aux))
                {
                    valores.Add(aux);
                }
            }
            promedio = Calcular.promediar(valores);
            return(promedio);
        }
示例#10
0
        public static double calcularKs(double Vtot, double LVtot, double LVred, bool noUsa, bool usaLB, Equipo equipo, EnergiaFotones energia, int DFSoISO, double Vred)
        {
            if (noUsa)
            {
                return(1);
            }
            else if (usaLB)
            {
                return(obtenerCaliReferencia(equipo, energia, DFSoISO).ks);
            }
            else
            {
                if (equipo.Fuente == 1)//Co
                {
                    return(Math.Round((Math.Pow((Vtot / Vred), 2) - 1) / (Math.Pow((Vtot / Vred), 2) - (LVtot / LVred)), 4));
                }
                else
                {
                    double a0 = 0; double a1 = 0; double a2 = 0;
                    if (equipo.TipoDeHaz == 1) //Pulsado
                    {
                        string[] fid             = Tabla.Cargar(Tabla.tabla_Ks_pulsados);
                        double[] v1_v2Etiquetas  = Tabla.extraerDoubleArray(fid, 0);
                        string[] a0a1a2Etiquetas = Tabla.extraerStringArray(fid, 1);
                        double[,] tabla = Tabla.extraerMatriz(fid, 3, 5, v1_v2Etiquetas.Count(), a0a1a2Etiquetas.Count());

                        a0 = Calcular.interpolatabla(Vtot / Vred, "a0", v1_v2Etiquetas, a0a1a2Etiquetas, tabla);
                        a1 = Calcular.interpolatabla(Vtot / Vred, "a1", v1_v2Etiquetas, a0a1a2Etiquetas, tabla);
                        a2 = Calcular.interpolatabla(Vtot / Vred, "a2", v1_v2Etiquetas, a0a1a2Etiquetas, tabla);
                    }
                    else
                    {
                        string[] fid             = Tabla.Cargar(Tabla.tabla_Ks_pulsadosYbarridos);
                        double[] v1_v2Etiquetas  = Tabla.extraerDoubleArray(fid, 0);
                        string[] a0a1a2Etiquetas = Tabla.extraerStringArray(fid, 1);
                        double[,] tabla = Tabla.extraerMatriz(fid, 3, 5, v1_v2Etiquetas.Count(), a0a1a2Etiquetas.Count());

                        a0 = Calcular.interpolatabla(Vtot / Vred, "a0", v1_v2Etiquetas, a0a1a2Etiquetas, tabla);
                        a1 = Calcular.interpolatabla(Vtot / Vred, "a1", v1_v2Etiquetas, a0a1a2Etiquetas, tabla);
                        a2 = Calcular.interpolatabla(Vtot / Vred, "a2", v1_v2Etiquetas, a0a1a2Etiquetas, tabla);
                    }
                    return(Math.Round(a0 + a1 * Math.Abs((LVtot / LVred)) + a2 * Math.Pow((LVtot / LVred), 2), 4));
                }
            }
        }
示例#11
0
        public static double calcularTendencia(BindingList <CalibracionElec> lista, bool fechas, DateTime desde, DateTime hasta, Equipo equipo, EnergiaElectrones energia, Chart grafico)
        {
            BindingList <CalibracionElec> listaFiltrada = new BindingList <CalibracionElec>();

            if (fechas)
            {
                foreach (CalibracionElec cali in lista)
                {
                    if (DateTime.Compare(cali.Fecha.Date, desde.Date) >= 0 && DateTime.Compare(cali.Fecha.Date, hasta.Date) <= 0)
                    {
                        listaFiltrada.Add(cali);
                    }
                }
            }
            else
            {
                listaFiltrada = lista;
            }
            if (listaFiltrada.Count() == 0)
            {
                MessageBox.Show("No hay calibraciones en el rango de fechas seleccionado");
                return(Double.NaN);
            }
            if (listaFiltrada.Count() == 1)
            {
                MessageBox.Show("En el rango de fechas seleccionado hay una única calibración.\nNo se puede realizar el análisis");
                return(Double.NaN);
            }
            else
            {
                List <Double> valores      = listaFiltrada.Select(q => q.Dwzref).ToList();
                List <Double> fechasDouble = listaFiltrada.Select(q => q.Fecha.ToOADate()).ToList();
                Graficar.agregarLineaTendencia(grafico, Calcular.cuadradosMinimos(fechasDouble, valores), fechasDouble.Min(), fechasDouble.Max());
                if (CalibracionElec.hayReferencia(equipo, energia))
                {
                    return(Math.Round(Calcular.cuadradosMinimos(fechasDouble, valores).Item1 / CalibracionElec.obtenerCaliReferencia(equipo, energia).Dwzref * 100 * 30, 2)); //mensual
                }
                else
                {
                    return(Math.Round(Calcular.cuadradosMinimos(fechasDouble, valores).Item1 / valores.Average() * 100 * 30, 2)); //mensual
                }
            }
        }
示例#12
0
        private void BT_Guardar_Click(object sender, EventArgs e)
        {
            int    auxSignoTension;
            string auxFecha = DTP_FechaCal.Value.ToShortDateString();

            if (CB_Tension.Text == "+")
            {
                auxSignoTension = 1;
            }
            else
            {
                auxSignoTension = -1;
            }

            double factorCalibracion = Convert.ToDouble(TB_FCal.Text); //

            if (CB_FactorCalibracionUnidades.SelectedText == "mGy/nC")
            {
                factorCalibracion = factorCalibracion / 1000;
            }
            else if (CB_FactorCalibracionUnidades.SelectedText == "cGy/nC")
            {
                factorCalibracion = factorCalibracion / 100;
            }
            SistemaDosimetrico.guardar(SistemaDosimetrico.crear((Camara)CB_Camara.SelectedItem, (Electrometro)CB_Electrometro.SelectedItem,
                                                                factorCalibracion,
                                                                auxSignoTension, Convert.ToDouble(TB_Tension.Text),
                                                                CB_HazRef.Text,
                                                                Convert.ToDouble(TB_Temp.Text),
                                                                Convert.ToDouble(TB_Presion.Text),
                                                                Calcular.doubleNaN(TB_Humedad),
                                                                auxFecha,
                                                                TB_LabCal.Text), editaSD, indice);
            editaSD = false;

            Close();
        }
示例#13
0
 public static double calcularKqq0(Camara camara, Equipo equipo, EnergiaElectrones energia, double R50ion = double.NaN)
 {
     return(Math.Round(Calcular.interpolarLinea(energia.R50D, Tabla.R50etiquetas, camara.kqq0Elec), 4));
 }
示例#14
0
 private void BT_EnElecGuardar_Click(object sender, EventArgs e)
 {
     DGV_EnElec.Visible = true;
     EnergiaElectrones.guardar(EnergiaElectrones.crear(Convert.ToDouble(TB_EnElecEn.Text), Calcular.doubleNaN(TB_EnElecLado), Calcular.doubleNaN(TB_EnElecR50ion), Calcular.doubleNaN(L_EnElecR50dosis), Calcular.doubleNaN(L_EnElecZref), Calcular.doubleNaN(TB_EnElecPDDZref)), editaEnergiaElect, DGV_EnElec);
     limpiarRegistro(Panel_EnElecEquipo);
     TB_EnElecLado.Text    = Configuracion.ladoCampoPredetElec.ToString();
     L_EnElecR50dosis.Text = null;
     L_EnElecZref.Text     = null;
     TB_EnElecEn.Focus(); // para que vuelva a energía para cargar uno nuevo
     BT_EnElecGuardar.Enabled = false;
     DGV_EnElec.Enabled       = true;
 }
示例#15
0
        /*  private void BT_EqIraCal_Click(object sender, EventArgs e)
         * {
         *    if (DGV_Equipo.SelectedRows.Count == 1)
         *    {
         *        Equipo seleccionado = Equipo.lista()[DGV_Equipo.SelectedRows[0].Index];
         *        CB_CaliEquipos.SelectedIndex = CB_CaliEquipos.FindStringExact(aux);
         *        actualizarComboBoxCaliFotones();
         *        panel = traerPanel(panel, 1, Panel_CalFot, Bt_CalFot, Panel_Botones);
         *        BT_EqIraCal.Text = "Seleccionar e ir a calibración";
         *    }
         *
         * }*/

        #endregion

        #region Equipos EnergiaFotonesBotones

        private void BT_EnFotGuardar_Click(object sender, EventArgs e)
        {
            DGV_EnFot.Visible = true;
            EnergiaFotones.guardar(EnergiaFotones.crear(Convert.ToDouble(TB_EnFotEn.Text), Calcular.doubleNaN(TB_EnFotLado), Calcular.doubleNaN(TB_EnFotZref), Calcular.doubleNaN(TB_EnFotPDD), Calcular.doubleNaN(TB_EnFotTMR)), editaEnergiaFot, DGV_EnFot);
            limpiarRegistro(Panel_EnFotEquipo);
            TB_EnFotLado.Text = Configuracion.ladoCampoPredetFot.ToString();
            TB_EnFotEn.Focus(); // para que vuelva a energía para cargar uno nuevo
            if (RB_FuenteCo.Checked == true && DGV_EnFot.ColumnCount > 0)
            {
                GB_EquiposEnergias.Enabled = false;
            }
            DGV_EnFot.Enabled = true;
        }
示例#16
0
        private void BT_GuardarEq_Click(object sender, EventArgs e)
        {
            if (editaEquipo)
            {
                indiceEquipo = DGV_Equipo.SelectedRows[0].Index;
            }
            int auxHaz = 0;

            if (RB_FuenteCo.Checked == true)
            {
                Equipo.guardar(Equipo.crearCo(cb_MarcaEq.Text, TB_ModeloEq.Text, TB_NumSerieEq.Text, TB_AliasEq.Text, 1, 0, Calcular.doubleNaN(TB_EnCoZref), Calcular.doubleNaN(TB_EnCoLado), Calcular.doubleNaN(TB_EnCoPDD), Calcular.doubleNaN(TB_EnCoTMR), cb_InstitucionEq.Text), editaEquipo, DGV_Equipo);
            }
            else if (RB_FuenteALE.Checked == true)
            {
                if (RB_Pulsado.Checked == true)
                {
                    auxHaz = 1;
                }
                else if (RB_PulsadoYBarrido.Checked == true)
                {
                    auxHaz = 2;
                }
                Equipo.guardar(Equipo.crearAle(cb_MarcaEq.Text, TB_ModeloEq.Text, TB_NumSerieEq.Text, TB_AliasEq.Text, 2, auxHaz, DGV_EnFot, DGV_EnElec, cb_InstitucionEq.Text), editaEquipo, DGV_Equipo);
            }

            DGV_Equipo.DataSource = Equipo.lista();
            limpiarRegistro(GB_Equipos);
            limpiarRegistro(Panel_FuenteEq);
            limpiarRegistro(Panel_TipoHazEq);
            limpiarRegistro(Panel_EnCoEquipo);
            limpiarRegistro(Panel_EnElecEquipo);
            limpiarRegistro(Panel_EnFotEquipo);
            DGV_EnFot.Rows.Clear();
            DGV_EnFot.Visible = false;
            DGV_EnElec.Rows.Clear();
            DGV_EnElec.Visible       = false;
            CHB_EnFotEquipo.Checked  = false;
            CHB_EnElecEquipo.Checked = false;
            TB_EnElecR50ion_Leave(sender, e);
            cb_MarcaEq.SelectedItem = -1;

            if (editaEquipo)
            {
                foreach (DataGridViewRow row in DGV_Equipo.Rows)
                {
                    row.Selected = false;
                }
                DGV_Equipo.Rows[indiceEquipo].Selected = true;
            }
            actualizarComboBoxCaliFotonesyElectrones(true);
            editaEquipo             = false;
            Panel_TipoHazEq.Enabled = false;

            DGV_Equipo.Enabled = true;
            InicializarInstitucionYMarcaEquipo();
        }