object CompositeIsotopics(string[] sa, bool headtest) { var res = new object(); CompositeIsotopics cis = null; CompositeIsotopic ci = null; Array ev = Enum.GetValues(typeof(CompIsCol)); if (headtest) // full iso line { if (sa.Length != ev.Length) return null; cis = new CompositeIsotopics(); res = cis; } else // comp iso subentry line { if (sa.Length != ev.Length - 2) return null; ci = new CompositeIsotopic(); res = ci; } float pumass = 0; Isotopics iso = new Isotopics(); string s = string.Empty; double v = 0, err = 0; foreach (CompIsCol op in ev) { try { if (headtest) s = sa[(int)op]; else { if (op > CompIsCol.IsoSourceCode) s = sa[(int)op - 2]; else s = string.Empty; } switch (op) { case CompIsCol.IsoSourceCode: if (headtest) { Enum.TryParse(s, out cis.source_code); iso.source_code = cis.source_code; } break; case CompIsCol.IsoId: if (headtest) { cis.id = string.Copy(s); iso.id = cis.id; } break; case CompIsCol.PuMass: //if (!headtest) // comp iso lines start with mass //{ float sv = 0f; float.TryParse(s, out sv); pumass = sv; //} break; case CompIsCol.AmDate: INCC5FileImportUtils.GenFromYYYYMMDD(s, ref iso.am_date); break; case CompIsCol.PuDate: INCC5FileImportUtils.GenFromYYYYMMDD(s, ref iso.pu_date); break; case CompIsCol.Pu238: double.TryParse(s, out v); iso.SetVal(Isotope.pu238, v); break; case CompIsCol.Pu239: double.TryParse(s, out v); iso.SetVal(Isotope.pu239, v); break; case CompIsCol.Pu240: double.TryParse(s, out v); iso.SetVal(Isotope.pu240, v); break; case CompIsCol.Pu241: double.TryParse(s, out v); iso.SetVal(Isotope.pu241, v); break; case CompIsCol.Pu242: double.TryParse(s, out v); iso.SetVal(Isotope.pu242, v); break; case CompIsCol.Am241: double.TryParse(s, out v); iso.SetVal(Isotope.am241, v); break; case CompIsCol.Pu238err: double.TryParse(s, out err); iso.SetError(Isotope.pu238, err); break; case CompIsCol.Pu239err: double.TryParse(s, out err); iso.SetError(Isotope.pu239, err); break; case CompIsCol.Pu240err: double.TryParse(s, out err); iso.SetError(Isotope.pu240, err); break; case CompIsCol.Pu241err: double.TryParse(s, out err); iso.SetError(Isotope.pu241, err); break; case CompIsCol.Pu242err: double.TryParse(s, out err); iso.SetError(Isotope.pu242, err); break; case CompIsCol.Am241err: double.TryParse(s, out err); iso.SetError(Isotope.am241, err); break; } } catch (Exception ex) { Results.mlogger.TraceEvent(LogLevels.Warning, 34100, s + " fails as composite isotopics summary element " + op.ToString() + " " + ex.Message); return null; } } // copy values onto the relevant object if (cis != null) cis.Copy(iso, pumass); if (ci != null) ci.Copy(iso, pumass); return res; }
string[] Convert(CompositeIsotopic i) { List<string[]> b = new List<string[]>(); // do the header line Array ev = Enum.GetValues(typeof(IsoFiles.CompIsCol)); string[] sa = new string[ev.Length - 2]; // not the identifier header entry so just do a - 2 sa[(int)IsoFiles.CompIsCol.AmDate - 2] = Quote(i.am_date.ToString("yyyyMMdd")); sa[(int)IsoFiles.CompIsCol.PuDate - 2] = Quote(i.pu_date.ToString("yyyyMMdd")); sa[(int)IsoFiles.CompIsCol.PuMass - 2] = i.pu_mass.ToString(); sa[(int)IsoFiles.CompIsCol.Pu238 - 2] = i.pu238.ToString(); sa[(int)IsoFiles.CompIsCol.Pu238err - 2] = i.pu238_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu239 - 2] = i.pu239.ToString(); sa[(int)IsoFiles.CompIsCol.Pu239err - 2] = i.pu239_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu240 - 2] = i.pu240.ToString(); sa[(int)IsoFiles.CompIsCol.Pu240err - 2] = i.pu240_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu241 - 2] = i.pu241.ToString(); sa[(int)IsoFiles.CompIsCol.Pu241err - 2] = i.pu241_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu242 - 2] = i.pu242.ToString(); sa[(int)IsoFiles.CompIsCol.Pu242err - 2] = i.pu242_err.ToString(); sa[(int)IsoFiles.CompIsCol.Am241 - 2] = i.am241.ToString(); sa[(int)IsoFiles.CompIsCol.Am241err - 2] = i.am241_err.ToString(); return sa; }