/* public static BindingList<Analisis> analizar(BindingList<CalibracionFot> lista, Equipo equipo, EnergiaFotones energia, int DFSoISO) * { * BindingList<Analisis> listaAnalisis = new BindingList<Analisis>(); * Analisis analisis = new Analisis(); * if (CalibracionFot.hayReferencia(equipo, energia, DFSoISO)) * { * CalibracionFot caliRef = CalibracionFot.obtenerCaliReferencia(equipo, energia, DFSoISO); * analisis.valorReferenciaYFecha = caliRef.Dwzref.ToString() + " (" + caliRef.Fecha.ToShortDateString() + ")"; * } * else * { * analisis.valorReferenciaYFecha = ""; * } * List<Double> valores = lista.Select(q => q.Dwzref).ToList(); * analisis.valorPromedio = Math.Round(valores.Average(), 2); * //analisis.desviacionEstandar = valores. * analisis.valorMaximoYFecha = valores.Max().ToString() + " (" + (lista[valores.IndexOf(valores.Max())].Fecha).ToShortDateString() + ")"; * analisis.valorMinimoYFecha = valores.Min().ToString() + " (" + (lista[valores.IndexOf(valores.Min())].Fecha).ToShortDateString() + ")"; * analisis.desvEstandar = Calcular.desvEstandar(valores); * * listaAnalisis.Add(analisis); * return listaAnalisis; * }*/ public static Analisis analizar2(BindingList <CalibracionFot> lista, Equipo equipo, EnergiaFotones energia, int DFSoISO) { Analisis analisis = new Analisis(); List <Double> valores = lista.Select(q => q.Dwzref).ToList(); if (CalibracionFot.hayReferencia(equipo, energia, DFSoISO)) { CalibracionFot caliRef = CalibracionFot.obtenerCaliReferencia(equipo, energia, DFSoISO); 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); }
private bool hayLBsinCartel() { if (!(RB_CaliFDFSfija.Checked || RB_CaliFIso.Checked) || CB_CaliEquipos.SelectedIndex == -1 || CB_CaliEnergias.SelectedIndex == -1) { return(false); } else if (!CalibracionFot.hayReferencia(equipoSeleccionado(), energiaSeleccionada(), DFSoISO())) { return(false); } else { return(true); } }
private bool hayLB() { if (!(RB_CaliFDFSfija.Checked || RB_CaliFIso.Checked) || CB_CaliEquipos.SelectedIndex == -1 || CB_CaliEnergias.SelectedIndex == -1) { MessageBox.Show("Debe elegir equipo, energía y condiciones de medición \npara poder cargar valores de referencia"); return(false); } else if (!CalibracionFot.hayReferencia(equipoSeleccionado(), energiaSeleccionada(), DFSoISO())) { MessageBox.Show("No se registra una calibración de referencia para este equipo, energía y condición"); return(false); } else { return(true); } }
public static double calcularTendencia(BindingList <CalibracionFot> lista, bool fechas, DateTime desde, DateTime hasta, Equipo equipo, EnergiaFotones energia, int DFSoISO, Chart grafico) { BindingList <CalibracionFot> listaFiltrada = new BindingList <CalibracionFot>(); if (fechas) { foreach (CalibracionFot 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 (CalibracionFot.hayReferencia(equipo, energia, DFSoISO)) { return(Math.Round(Calcular.cuadradosMinimos(fechasDouble, valores).Item1 / CalibracionFot.obtenerCaliReferencia(equipo, energia, DFSoISO).Dwzref * 100 * 30, 2)); //mensual } else { return(Math.Round(Calcular.cuadradosMinimos(fechasDouble, valores).Item1 / valores.Average() * 100 * 30, 2)); //mensual } } }