コード例 #1
0
        public static BindingList <CalibracionElec> lista(Equipo equipo, EnergiaElectrones energia)
        {
            var filtrada = IO.readJsonList <CalibracionElec>(file).Where(c => c.Equipo.Equals(equipo) && c.Energia.Equals(energia)).ToList();

            filtrada.Sort((x, y) => DateTime.Compare(x.Fecha, y.Fecha));
            return(new BindingList <CalibracionElec>(filtrada));
        }
コード例 #2
0
ファイル: EnergiaElectrones.cs プロジェクト: pabloaberbuj/398
 public static void guardar(EnergiaElectrones _nuevo, bool edita, DataGridView DGV)
 {
     if (edita)
     {
         string IDvieja   = ((EnergiaElectrones)DGV.SelectedRows[0].DataBoundItem).ID;
         var    auxlista  = lista(DGV);
         int    indice    = DGV.SelectedRows[0].Index;
         bool   auxPredet = auxlista[indice].EsPredet;
         auxlista.RemoveAt(indice);
         _nuevo.ID = IDvieja;
         auxlista.Insert(indice, _nuevo);
         auxlista[indice].EsPredet = auxPredet;
         DGV.DataSource            = auxlista;
         DGV.ClearSelection();
         DGV.Rows[indice].Selected = true;
         edita = false;
     }
     else
     {
         if (DGV.RowCount == 0)
         {
             _nuevo.EsPredet = true;
         }
         var auxlista = lista(DGV);
         _nuevo.ID = _nuevo.Etiqueta;
         auxlista.Add(_nuevo);
         DGV.DataSource = auxlista;
     }
     darFormatoADGV(DGV);
 }
コード例 #3
0
        public static void editarAle(ComboBox Marca, TextBox Modelo, TextBox NumSerie, TextBox Alias, ComboBox Institucion, Panel Fuente, Panel TipoHaz,
                                     DataGridView DGVEnFot, DataGridView DGVEnElec, DataGridView DGVEquipo)
        {
            Equipo aux = (Equipo)DGVEquipo.SelectedRows[0].DataBoundItem;

            Marca.Text       = aux.Marca;
            Modelo.Text      = aux.Modelo;
            NumSerie.Text    = aux.NumSerie;
            Alias.Text       = aux.Alias;
            Institucion.Text = aux.Institucion;
            Fuente.Controls.OfType <RadioButton>().ElementAt(1).Checked = false; //Control ALE
            Fuente.Controls.OfType <RadioButton>().ElementAt(0).Checked = true;  //Control Co
            if (aux.TipoDeHaz == 1)
            {
                TipoHaz.Controls.OfType <RadioButton>().ElementAt(1).Checked = true;  //pulsado
                TipoHaz.Controls.OfType <RadioButton>().ElementAt(0).Checked = false; //pulsado y barrido
            }
            else if (aux.TipoDeHaz == 2)
            {
                TipoHaz.Controls.OfType <RadioButton>().ElementAt(1).Checked = false;
                TipoHaz.Controls.OfType <RadioButton>().ElementAt(0).Checked = true;
            }
            DGVEnFot.DataSource = aux.energiaFot;
            EnergiaFotones.darFormatoADGV(DGVEnFot);
            DGVEnElec.DataSource = aux.energiaElec;
            EnergiaElectrones.darFormatoADGV(DGVEnElec);
        }
コード例 #4
0
ファイル: EnergiaElectrones.cs プロジェクト: pabloaberbuj/398
        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);
        }
コード例 #5
0
ファイル: Form_Equipos.cs プロジェクト: pabloaberbuj/398
 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;
 }
コード例 #6
0
        public static CalibracionElec obtenerCaliReferencia(Equipo equipo, EnergiaElectrones energia)
        {
            CalibracionElec caliLB = new CalibracionElec();

            foreach (CalibracionElec cali in lista())
            {
                if (cali.Equipo.Equals(equipo) && cali.Energia.Equals(energia) && cali.EsReferencia)
                {
                    caliLB = cali;
                    break;
                }
            }
            return(caliLB);
        }
コード例 #7
0
        //linea base

        public static bool hayReferencia(Equipo equipo, EnergiaElectrones energia)
        {
            bool hayRef = false;

            foreach (CalibracionElec cali in lista())
            {
                if (cali.Equipo.Equals(equipo) && cali.Energia.Equals(energia) && cali.EsReferencia)
                {
                    hayRef = true;
                    break;
                }
            }
            return(hayRef);
        }
コード例 #8
0
        public static Equipo crearAle(string _marca, string _modelo, string _numSerie, string _alias, int _fuente, int _tipoDeHaz,
                                      DataGridView DGVFot, DataGridView DGVElec, string _institucion)
        //EsPredet inicia como false siempre
        {
            string       auxEnergiasFot  = "";
            string       auxEnergiasElec = "";
            ListaFotones listaF          = new ListaFotones();

            if (EnergiaFotones.lista(DGVFot).Count > 0)
            {
                listaF = EnergiaFotones.lista(DGVFot);
            }
            ListaElectrones listaE = new ListaElectrones();

            if (EnergiaElectrones.lista(DGVElec).Count > 0)
            {
                listaE = EnergiaElectrones.lista(DGVElec);
            }
            foreach (var energia in EnergiaFotones.lista(DGVFot))
            {
                auxEnergiasFot += energia.Energia + " ";
            }
            foreach (var energia in EnergiaElectrones.lista(DGVElec))
            {
                auxEnergiasElec += energia.Energia + " ";
            }
            string auxEtiqueta = "";

            if (_alias != "")
            {
                auxEtiqueta += " (" + _alias + ")";
            }
            return(new Equipo()
            {
                Marca = _marca,
                Modelo = _modelo,
                NumSerie = _numSerie,
                Alias = _alias,
                Fuente = _fuente,
                TipoDeHaz = _tipoDeHaz,
                energiaFot = listaF,
                EnergiasFotones = auxEnergiasFot,
                energiaElec = listaE,
                EnergiasElectrones = auxEnergiasElec,
                Institucion = _institucion,
                Etiqueta = _marca + " " + _modelo + " " + auxEtiqueta,
                Nota = "",
            });
        }
コード例 #9
0
ファイル: Form_Equipos.cs プロジェクト: pabloaberbuj/398
 private void TB_EnElecR50ion_Leave(object sender, EventArgs e)
 {
     if (TB_EnElecR50ion.Text != "")
     {
         L_EnElecR50dosis.Text    = EnergiaElectrones.calcularR50D(Convert.ToDouble(TB_EnElecR50ion.Text)).ToString();
         L_EnElecR50dosis.Visible = true;
         L_EnElecZref.Text        = EnergiaElectrones.calcularZref(Convert.ToDouble(TB_EnElecR50ion.Text)).ToString();
         L_EnElecZref.Visible     = true;
     }
     else
     {
         L_EnElecR50dosis.Text    = "Vacio";
         L_EnElecR50dosis.Visible = false;
         L_EnElecZref.Text        = "Vacio";
         L_EnElecZref.Visible     = false;
     }
 }
コード例 #10
0
        private void InicializarComboBoxEnergias(bool guardarSeleccion = false)
        {
            EnergiaElectrones energiaASeleccionar = new EnergiaElectrones();
            EnergiaElectrones energiaPredet       = new EnergiaElectrones();

            if (guardarSeleccion)
            {
                energiaASeleccionar = (EnergiaElectrones)CB_CaliEnergias.SelectedItem;
            }
            CB_CaliEnergias.Items.Clear();

            if (CB_CaliEquipos.SelectedIndex != -1)
            {
                if (equipoSeleccionado().Fuente == 2)
                {
                    foreach (var energia in equipoSeleccionado().energiaElec)
                    {
                        CB_CaliEnergias.Items.Add(energia);
                        CB_CaliEnergias.DisplayMember = "Etiqueta";
                        if (energia.EsPredet == true)
                        {
                            energiaPredet = energia;
                        }
                    }
                    if (energiaASeleccionar != null)
                    {
                        CB_CaliEnergias.SelectedItem = equipoSeleccionado().energiaElec.Where(e => e.ID == energiaASeleccionar.ID).FirstOrDefault();
                    }
                    else if (energiaPredet != null)
                    {
                        CB_CaliEnergias.SelectedItem = equipoSeleccionado().energiaElec.Where(e => e.ID == energiaPredet.ID).FirstOrDefault();
                    }

                    CB_CaliEnergias.Enabled = true;
                }
                CB_CaliEnergias.DisplayMember = "Etiqueta";
            }
        }
コード例 #11
0
 public static CalibracionElec crear(Equipo _equipo, EnergiaElectrones _energia, SistemaDosimetrico _sistdos, double _ladoCampo, double _zref, DateTime _fecha,
                                     string _realizadoPor, double _ktp, double _kqq0, double _kpol, int _mideKpol, double _vred, double _ks, int _mideKs, double _mref, double _dwzref, double _dwzmax,
                                     double _um, double _temperatura, double _presion, double _humedad, double _lectVmas, double _lectVmenos, double _lectVtot, double _lectVred,
                                     double _lectRef, double _difLB)
 {
     return(new CalibracionElec()
     {
         Equipo = _equipo,
         Energia = _energia,
         SistemaDosim = _sistdos,
         LadoCampo = _ladoCampo,
         Zref = _zref,
         Fecha = _fecha,
         RealizadoPor = _realizadoPor,
         UM = _um,
         temperatura = _temperatura,
         presion = _presion,
         humedad = _humedad,
         Ktp = _ktp,
         Kqq0 = _kqq0,
         lectVmas = _lectVmas,
         lectVmenos = _lectVmenos,
         kpol = _kpol,
         mideKpol = _mideKpol,
         Vred = _vred,
         lectVtot = _lectVtot,
         lectVred = _lectVred,
         ks = _ks,
         mideKs = _mideKs,
         lectRef = _lectRef,
         Mref = _mref,
         Dwzref = _dwzref,
         Dwzmax = _dwzmax,
         DifLB = _difLB,
         EsReferencia = false,
     });
 }
コード例 #12
0
        public static double calcularDifConRef(double Dwref, Equipo equipo, EnergiaElectrones energia)
        {
            double DwrefLB = obtenerCaliReferencia(equipo, energia).Dwzref;

            return(Math.Round((Dwref - DwrefLB) / DwrefLB * 100, 4));
        }
コード例 #13
0
ファイル: Form_Equipos.cs プロジェクト: pabloaberbuj/398
 private void BT_EnElecEditar_Click(object sender, EventArgs e)
 {
     DGV_EnElec.Enabled = false;
     EnergiaElectrones.editar(TB_EnElecEn, TB_EnElecR50ion, TB_EnElecLado, L_EnElecR50dosis, L_EnElecZref, TB_EnElecPDDZref, DGV_EnElec);
     editaEnergiaElect = true;
 }
コード例 #14
0
ファイル: Form_Equipos.cs プロジェクト: pabloaberbuj/398
 private void BT_EnElecPredet_Click(object sender, EventArgs e)
 {
     EnergiaElectrones.hacerPredeterminado(DGV_EnElec);
 }
コード例 #15
0
 public static double calcularKpol(int signopol, double LVmas, double LVmenos, bool noUsa, bool usaLB, Equipo equipo, EnergiaElectrones energia)
 {
     if (noUsa)
     {
         return(1);
     }
     else if (usaLB)
     {
         return(obtenerCaliReferencia(equipo, energia).kpol);
     }
     else
     {
         if (signopol == 1) //polaridad positiva
         {
             return(Math.Round((Math.Abs(LVmas) + Math.Abs(LVmenos)) / (2 * Math.Abs(LVmas)), 4));
         }
         else
         {
             return(Math.Round((Math.Abs(LVmas) + Math.Abs(LVmenos)) / (2 * Math.Abs(LVmenos)), 4));
         }
     }
 }
コード例 #16
0
ファイル: Analisis.cs プロジェクト: pabloaberbuj/398
        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);
        }
コード例 #17
0
ファイル: Analisis.cs プロジェクト: pabloaberbuj/398
        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
                }
            }
        }
コード例 #18
0
        public static double calcularKs(double Vtot, double LVtot, double LVred, bool noUsa, bool usaLB, Equipo equipo, EnergiaElectrones energia, double Vred)
        {
            if (noUsa)
            {
                return(1);
            }
            else if (usaLB)
            {
                return(obtenerCaliReferencia(equipo, energia).ks);
            }
            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));
            }
        }
コード例 #19
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));
 }
コード例 #20
0
ファイル: Form_Equipos.cs プロジェクト: pabloaberbuj/398
 private void BT_EnElecEliminar_Click(object sender, EventArgs e)
 {
     EnergiaElectrones.eliminar(DGV_EnElec);
     limpiarRegistro(Panel_EnElecEquipo);
 }