private bool ParseN42File() { if (radInstrumentDataType == null || deviceData == null) { return(false); } try { var radInstrumentInformationType = radInstrumentDataType.RadInstrumentInformation; if (radInstrumentInformationType == null) { throw new Exception("'radInstrumentInformationType' not found"); } // Get DeviceType deviceData.DeviceType = radInstrumentInformationType.RadInstrumentManufacturerName + " " + radInstrumentInformationType.RadInstrumentModelName; // Get SerialNumber deviceData.SerialNumber = radInstrumentInformationType.RadInstrumentIdentifier; // Get needed nodes AnalysisResultsType and RadMeasurementType var itemsElementNames = radInstrumentDataType.ItemsElementName; if (itemsElementNames == null) { return(false); } AnalysisResultsType analysisResultsType = null; RadMeasurementType radMeasurementType = null; bool analysisFound = false, radMeasurementFound = false; for (int i = 0; i < itemsElementNames.Count(); i += 1) { if (analysisFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.AnalysisResults) { analysisResultsType = radInstrumentDataType.Items[i] as AnalysisResultsType; analysisFound = true; } } if (radMeasurementFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.RadMeasurement) { radMeasurementType = radInstrumentDataType.Items[i] as RadMeasurementType; // Check if correct node if (radMeasurementType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { radMeasurementFound = true; } } } if (analysisFound && analysisFound) { break; } } if (radMeasurementFound == false) { throw new Exception("'radMeasurementFound' not found"); } // Get StartTime deviceData.StartDateTime = radMeasurementType.StartDateTime_DateTime; // Get MeasureTime string value = radMeasurementType.RealTimeDuration.Remove(0, 2); value = value.Remove(value.Length - 1, 1); deviceData.MeasureTime = new TimeSpan(0, 0, (int)Math.Round(double.Parse(value))); // Get CountRate var grossCounts = radMeasurementType.GrossCounts.SingleOrDefault(x => x.id == "ForegroundMeasurement-MCA-GrossCounts"); if (grossCounts == null) { throw new Exception("'GrossCounts' not found"); } deviceData.CountRate = Convert.ToDouble(grossCounts.CountData); // Get Identified Nuclides if (analysisFound == false) { return(true); } var nuclides = analysisResultsType.NuclideAnalysisResults.Nuclide; if (nuclides == null) { return(true); } for (int i = 0; i < nuclides.Count(); i += 1) { var elementNames = nuclides[i].ItemsElementName; for (int c = 0; c < elementNames.Length; c += 1) { if (elementNames[c] == ItemsChoiceType.NuclideIDConfidenceValue) { deviceData.Nuclides[i] = new NuclideID(nuclides[i].NuclideName.Replace('_', '-'), (double)nuclides[i].Items[c]); break; } } } } catch (Exception ex) { fileErrors.Add(new KeyValuePair <string, string>(Path.GetFileName(deviceData.FileName), ex.Message)); ErrorsOccurred = true; return(false); } return(true); }
private bool ParseN42File() { if (radInstrumentDataType == null || deviceData == null) { return(false); } try { var radInstrumentInformationType = radInstrumentDataType.RadInstrumentInformation; if (radInstrumentInformationType == null) { return(false); } // Get DeviceType deviceData.DeviceType = radInstrumentInformationType.RadInstrumentManufacturerName + " " + radInstrumentInformationType.RadInstrumentModelName; // Get SerialNumber deviceData.SerialNumber = radInstrumentInformationType.RadInstrumentIdentifier; // Get needed nodes AnalysisResultsType and RadMeasurementType var itemsElementNames = radInstrumentDataType.ItemsElementName; if (itemsElementNames == null) { return(false); } AnalysisResultsType analysisResultsType = null; RadMeasurementType radMeasurementType = null; bool analysisFound = false, radMeasurementFound = false; for (int i = 0; i < itemsElementNames.Count(); i += 1) { if (analysisFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.AnalysisResults) { analysisResultsType = radInstrumentDataType.Items[i] as AnalysisResultsType; analysisFound = true; } } if (radMeasurementFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.RadMeasurement) { radMeasurementType = radInstrumentDataType.Items[i] as RadMeasurementType; // Check if correct node if (radMeasurementType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { radMeasurementFound = true; } } } if (analysisFound && radMeasurementFound) { break; } } if (radMeasurementFound == true) { // Get StartTime deviceData.StartDateTime = radMeasurementType.StartDateTime_DateTime; // Get MeasureTime var value = radMeasurementType.RealTimeDuration.Remove(0, 2); var mIndex = value.IndexOf("M"); var sIndex = value.IndexOf("S"); var periodIndex = value.IndexOf("."); if (mIndex != -1 && periodIndex != -1 && sIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, 0, int.Parse(value.Substring(0, mIndex)), int.Parse(value.Substring(mIndex + 1, periodIndex - mIndex - 1)), int.Parse(value.Substring(periodIndex + 1, 3))); } else if (mIndex != -1 && sIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, int.Parse(value.Substring(0, mIndex)), int.Parse(value.Substring(mIndex + 1, sIndex - mIndex - 1))); } else if (mIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, int.Parse(value.Substring(0, mIndex)), 0); } else if (sIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, 0, int.Parse(value.Substring(0, sIndex))); } // Get CountRate int sum = radMeasurementType.Spectrum.FirstOrDefault().ChannelData.Text .Split(Globals.Delim_Space, StringSplitOptions.RemoveEmptyEntries) .Sum(c => int.Parse(c)); deviceData.CountRate = sum / deviceData.MeasureTime.TotalSeconds; } // Get Nuclides if (analysisFound == true) { var nuclides = analysisResultsType.NuclideAnalysisResults.Nuclide; for (int i = 0; i < nuclides.Count(); i += 1) { var elementNames = nuclides[i].ItemsElementName; for (int c = 0; c < elementNames.Length; c += 1) { if (elementNames[c] == ItemsChoiceType.NuclideIDConfidenceValue) { deviceData.Nuclides[i] = new NuclideID(nuclides[i].NuclideName, Convert.ToDouble(nuclides[i].Items[c])); break; } } } } } catch (Exception ex) { fileErrors.Add(new KeyValuePair <string, string>(Path.GetFileName(deviceData.FileName), ex.Message)); ErrorsOccurred = true; return(false); } return(true); }
private bool ParseN42File() { if (radInstrumentDataType == null || deviceData == null) { return(false); } try { var radInstrumentInformationType = radInstrumentDataType.RadInstrumentInformation; if (radInstrumentInformationType == null) { return(false); } // Get DeviceType deviceData.DeviceType = radInstrumentInformationType.RadInstrumentManufacturerName + " " + radInstrumentInformationType.RadInstrumentModelName; // Get SerialNumber deviceData.SerialNumber = radInstrumentInformationType.RadInstrumentIdentifier; // Get needed nodes AnalysisResultsType and RadMeasurementType var itemsElementNames = radInstrumentDataType.ItemsElementName; if (itemsElementNames == null) { return(false); } AnalysisResultsType analysisResultsType = null; RadMeasurementType radMeasurementType = null; bool analysisFound = false, radMeasurementFound = false; for (int i = 0; i < itemsElementNames.Count(); i += 1) { if (analysisFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.AnalysisResults) { analysisResultsType = radInstrumentDataType.Items[i] as AnalysisResultsType; analysisFound = true; } } if (radMeasurementFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.RadMeasurement) { radMeasurementType = radInstrumentDataType.Items[i] as RadMeasurementType; // Check if correct node if (radMeasurementType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { radMeasurementFound = true; } } } if (analysisFound && analysisFound) { break; } } if (radMeasurementFound == false || analysisFound == false) { return(false); } // Get StartTime deviceData.StartDateTime = radMeasurementType.StartDateTime_DateTime; // Get MeasureTime string value = radMeasurementType.RealTimeDuration.Remove(0, 2); value = value.Remove(value.Length - 1, 1); deviceData.MeasureTime = new TimeSpan(0, 0, (int)Math.Round(double.Parse(value))); // Get CountRate var grossCounts = radMeasurementType.GrossCounts.SingleOrDefault(x => x.radDetectorInformationReference == "R6"); if (grossCounts != null) { deviceData.CountRate = Convert.ToDouble(grossCounts.CountData); } else { var sum = radMeasurementType.Spectrum.FirstOrDefault().ChannelData.Text .Split(Globals.Delim_Space, StringSplitOptions.RemoveEmptyEntries) .Sum(c => Convert.ToDouble(c)); deviceData.CountRate = sum / deviceData.MeasureTime.TotalSeconds; } // Get Identified Nuclides var nuclides = analysisResultsType.NuclideAnalysisResults.Nuclide; for (int i = 0; i < nuclides.Count(); i += 1) { var elementNames = nuclides[i].ItemsElementName; for (int c = 0; c < elementNames.Length; c += 1) { if (elementNames[c] == ItemsChoiceType.NuclideIDConfidenceValue) { deviceData.Nuclides[i] = new NuclideID(nuclides[i].NuclideName.Replace('_', '-'), (double)nuclides[i].Items[c]); break; } } } } catch (Exception ex) { fileErrors.Add(new KeyValuePair <string, string>(Path.GetFileName(deviceData.FileName), ex.Message)); ErrorsOccurred = true; return(false); } return(true); }
private bool ParseN42File() { if (radInstrumentDataType == null || deviceData == null) { return(false); } try { var radInstrumentInformationType = radInstrumentDataType.RadInstrumentInformation; if (radInstrumentInformationType == null) { return(false); } // Get DeviceType deviceData.DeviceType = radInstrumentInformationType.RadInstrumentManufacturerName + " " + radInstrumentInformationType.RadInstrumentModelName; // Get SerialNumber deviceData.SerialNumber = radInstrumentInformationType.RadInstrumentIdentifier; // Get needed nodes AnalysisResultsType and DerivedDataType var itemsElementNames = radInstrumentDataType.ItemsElementName; if (itemsElementNames == null) { return(false); } AnalysisResultsType analysisResultsType = null; DerivedDataType derivedDataType = null; RadMeasurementType radMeasurementType = null; bool analysisFound = false, derivedDataFound = false, radMeasurementFound = false; for (int i = 0; i < itemsElementNames.Count(); i += 1) { if (analysisFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.AnalysisResults) { analysisResultsType = radInstrumentDataType.Items[i] as AnalysisResultsType; if (analysisResultsType.NuclideAnalysisResults != null) { analysisFound = true; } } } if (derivedDataFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.DerivedData) { derivedDataType = radInstrumentDataType.Items[i] as DerivedDataType; // Check if correct node if (derivedDataType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { derivedDataFound = true; } } } if (radMeasurementFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.RadMeasurement) { radMeasurementType = radInstrumentDataType.Items[i] as RadMeasurementType; // Check if correct node if (radMeasurementType.id == "ForegroundMeasureSum") { radMeasurementFound = true; } } } if (analysisFound && derivedDataFound && radMeasurementFound) { break; } } if (derivedDataFound == true) { // Get StartTime deviceData.StartDateTime = derivedDataType.StartDateTime; // Get MeasureTime string value = derivedDataType.RealTimeDuration.Remove(0, 2); value = value.Remove(value.Length - 1, 1); deviceData.MeasureTime = new TimeSpan(0, 0, (int)Math.Round(double.Parse(value))); } // Get CountRate List <int> grossCounts = new List <int>(); foreach (var grossCountValue in radMeasurementType.GrossCounts) { int value; bool castSuccess = int.TryParse(grossCountValue.CountData, out value); if (castSuccess) { grossCounts.Add(int.Parse(grossCountValue.CountData)); } else { return(false); } } deviceData.CountRate = grossCounts.Max(); // Get Identified Nuclides if (analysisFound == true) { var nuclides = analysisResultsType.NuclideAnalysisResults.Nuclide; for (int i = 0; i < nuclides.Count(); i += 1) { var elementNames = nuclides[i].ItemsElementName; for (int c = 0; c < elementNames.Count(); c += 1) { if (elementNames[c] == ItemsChoiceType.NuclideIDConfidenceValue) { deviceData.Nuclides[i] = new NuclideID(nuclides[i].NuclideName, (double)nuclides[i].Items[c]); } } } } } catch (Exception ex) { fileErrors.Add(new KeyValuePair <string, string>(Path.GetFileName(deviceData.FileName), ex.Message)); ErrorsOccurred = true; return(false); } return(true); }
private bool ParseN42File() { if (radInstrumentDataType == null || deviceData == null) { return(false); } try { var radInstrumentInformationType = radInstrumentDataType.RadInstrumentInformation; if (radInstrumentInformationType == null) { return(false); } // Get DeviceType deviceData.DeviceType = radInstrumentInformationType.RadInstrumentManufacturerName + " " + radInstrumentInformationType.RadInstrumentModelName; // Get SerialNumber deviceData.SerialNumber = radInstrumentInformationType.RadInstrumentIdentifier; // Get needed nodes AnalysisResultsType and RadMeasurementType var itemsElementNames = radInstrumentDataType.ItemsElementName; if (itemsElementNames == null) { return(false); } AnalysisResultsType analysisResultsType = null; RadMeasurementType radMeasurementType = null; RadMeasurementType lastRadMeasurementType = null; List <RadMeasurementType> radMeasureTypes = new List <RadMeasurementType>(); bool analysisFound = false, radMeasurementFound = false; for (int i = 0; i < itemsElementNames.Count(); i += 1) { if (analysisFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.AnalysisResults) { analysisResultsType = radInstrumentDataType.Items[i] as AnalysisResultsType; analysisFound = true; } } if (itemsElementNames[i] == ItemsChoiceType2.RadMeasurement) { radMeasurementType = radInstrumentDataType.Items[i] as RadMeasurementType; // Check if correct node if (radMeasurementType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { radMeasureTypes.Add(radMeasurementType); lastRadMeasurementType = radMeasurementType; radMeasurementFound = true; } } } if (radMeasurementFound == true) { // Get StartTime deviceData.StartDateTime = radMeasureTypes[0].StartDateTime_DateTime; // Get MeasureTime var value = lastRadMeasurementType.RealTimeDuration.Remove(0, 2); var mIndex = value.IndexOf("M"); var sIndex = value.IndexOf("S"); var periodIndex = value.IndexOf("."); if (mIndex != -1 && periodIndex != -1 && sIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, 0, int.Parse(value.Substring(0, mIndex)), int.Parse(value.Substring(mIndex + 1, periodIndex - mIndex - 1)), int.Parse(value.Substring(periodIndex + 1, 3))); } else if (mIndex != -1 && sIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, int.Parse(value.Substring(0, mIndex)), int.Parse(value.Substring(mIndex + 1, sIndex - mIndex - 1))); } else if (mIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, int.Parse(value.Substring(0, mIndex)), 0); } else if (sIndex != -1) { deviceData.MeasureTime = new TimeSpan(0, 0, int.Parse(value.Substring(0, sIndex))); } // Get CountRate // Grabbed the first neutron gross count value from lastRadMeasurementFound. foreach (GrossCountsType item in lastRadMeasurementType.GrossCounts) { if (string.Equals(item.radDetectorInformationReference, "Neutron")) { deviceData.CountRate = Double.Parse(item.CountData); } } } if (analysisFound == true) { // Get Nuclides var nuclides = analysisResultsType.NuclideAnalysisResults.Nuclide; for (int i = 0; i < nuclides.Count(); i += 1) { var elementNames = nuclides[i].ItemsElementName; for (int c = 0; c < elementNames.Length; c += 1) { if (elementNames[c] == ItemsChoiceType.NuclideIDConfidenceValue) { deviceData.Nuclides[i] = new NuclideID(nuclides[i].NuclideName, Convert.ToDouble(nuclides[i].Items[c])); break; } } } } } catch (Exception ex) { fileErrors.Add(new KeyValuePair <string, string>(Path.GetFileName(deviceData.FileName), ex.Message)); ErrorsOccurred = true; return(false); } return(true); }
private bool ParseN42File() { if (radInstrumentDataType == null || deviceData == null) { return(false); } try { var radInstrumentInformationType = radInstrumentDataType.RadInstrumentInformation; if (radInstrumentInformationType == null) { return(false); } // Get DeviceType deviceData.DeviceType = radInstrumentInformationType.RadInstrumentManufacturerName + " " + radInstrumentInformationType.RadInstrumentModelName; // Get SerialNumber deviceData.SerialNumber = radInstrumentInformationType.RadInstrumentIdentifier; // Get needed nodes AnalysisResultsType and RadMeasurementType var itemsElementNames = radInstrumentDataType.ItemsElementName; if (itemsElementNames == null) { return(false); } AnalysisResultsType analysisResultsType = null; RadMeasurementType radMeasurementType = null; List <AnalysisResultsType> analysisResultsList = new List <AnalysisResultsType>(); List <DerivedDataType> derivedDataList = new List <DerivedDataType>(); List <RadMeasurementType> radMeasurementList = new List <RadMeasurementType>(); bool analysisFound = false, derivedDataFound = false, radMeasurementFound = false; for (int i = 0; i < itemsElementNames.Count(); i += 1) { if (itemsElementNames[i] == ItemsChoiceType2.AnalysisResults) { analysisResultsType = radInstrumentDataType.Items[i] as AnalysisResultsType; analysisResultsList.Add(analysisResultsType); analysisFound = true; } if (itemsElementNames[i] == ItemsChoiceType2.DerivedData) { DerivedDataType tempDerivedDataType = radInstrumentDataType.Items[i] as DerivedDataType; // Check if correct node if (tempDerivedDataType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { derivedDataList.Add(tempDerivedDataType); } derivedDataFound = true; } if (itemsElementNames[i] == ItemsChoiceType2.RadMeasurement) { radMeasurementType = radInstrumentDataType.Items[i] as RadMeasurementType; // Check if correct node if (radMeasurementType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { radMeasurementList.Add(radMeasurementType); } radMeasurementFound = true; } } if (derivedDataFound) { // Get StartTime deviceData.StartDateTime = derivedDataList[0].StartDateTime; // Get MeasureTime deviceData.MeasureTime = new TimeSpan(0, 0, 0); foreach (DerivedDataType item in derivedDataList) { string time = item.RealTimeDuration.Remove(0, 2); var mIndex = time.IndexOf("M"); var sIndex = time.IndexOf("S"); var periodIndex = time.IndexOf("."); if (mIndex != -1 && periodIndex != -1 && sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, 0, int.Parse(time.Substring(0, mIndex)), int.Parse(time.Substring(mIndex + 1, periodIndex - mIndex - 1)), int.Parse(time.Substring(periodIndex + 1, sIndex - periodIndex - 1)))); } else if (mIndex != -1 && sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, int.Parse(time.Substring(0, mIndex)), int.Parse(time.Substring(mIndex + 1, sIndex - mIndex - 1)))); } else if (mIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, int.Parse(time.Substring(0, mIndex)), 0)); } else if (periodIndex != -1 && sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, 0, 0, int.Parse(time.Substring(0, periodIndex)), int.Parse(time.Substring(periodIndex + 1, sIndex - periodIndex - 1)))); } else if (sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, 0, int.Parse(time.Substring(0, sIndex)))); } } } // Get CountRate if (radMeasurementFound) { int sumCountData = 0; foreach (RadMeasurementType item in radMeasurementList) { foreach (GrossCountsType grossCounts in item.GrossCounts) { int num; bool castSuccess = int.TryParse(grossCounts.CountData, out num); if (castSuccess) { sumCountData += num; } } } deviceData.CountRate = sumCountData; } // Get Identified Nuclides if (analysisFound == true) { List <NuclideType> nuclideResults = new List <NuclideType>(); //Add first nuclide to the result list foreach (NuclideType nucResult in analysisResultsList[0].NuclideAnalysisResults.Nuclide) { if (nucResult.ItemsElementName[0] == ItemsChoiceType.NuclideIDConfidenceValue) { nuclideResults.Add(nucResult); } } int val = analysisResultsList.Count(); for (int i = 1; i < analysisResultsList.Count() - 1; i += 1) { foreach (NuclideType nuclide in analysisResultsList[i].NuclideAnalysisResults.Nuclide) { foreach (NuclideType nucResult in nuclideResults) { //Add nuclides to result list if the nuclide is not in the list if (nuclide.NuclideName != nucResult.NuclideName && nuclide.ItemsElementName[0] == ItemsChoiceType.NuclideIDConfidenceValue) { nuclideResults.Add(nuclide); break; } //Updates the confidence value for a nuclide if a larger value is found else if (nuclide.NuclideName == nucResult.NuclideName && nuclide.ItemsElementName[0] == ItemsChoiceType.NuclideIDConfidenceValue && ((double)nuclide.Items[0] > (double)nucResult.Items[0])) { nuclideResults.Remove(nucResult); nuclideResults.Add(nuclide); break; } } } } //Add nuclides to deviceData for (int i = 0; i < nuclideResults.Count(); i += 1) { var elementNames = nuclideResults[i].ItemsElementName; for (int c = 0; c < elementNames.Length; c += 1) { if (elementNames[c] == ItemsChoiceType.NuclideIDConfidenceValue) { deviceData.Nuclides[i] = new NuclideID(nuclideResults[i].NuclideName, (double)nuclideResults[i].Items[c]); break; } } } } } catch (Exception ex) { fileErrors.Add(new KeyValuePair <string, string>(Path.GetFileName(deviceData.FileName), ex.Message)); ErrorsOccurred = true; return(false); } return(true); }
private bool ParseN42File() { if (radInstrumentDataType == null || deviceData == null) { return(false); } try { var radInstrumentInformationType = radInstrumentDataType.RadInstrumentInformation; if (radInstrumentInformationType == null) { return(false); } // Get DeviceType deviceData.DeviceType = radInstrumentInformationType.RadInstrumentManufacturerName + " " + radInstrumentInformationType.RadInstrumentModelName; // Get SerialNumber deviceData.SerialNumber = radInstrumentInformationType.RadInstrumentIdentifier; // Get needed nodes and necessary data from AnalysisResultsType, DerivedDataType, and RadMeasurementType var itemsElementNames = radInstrumentDataType.ItemsElementName; if (itemsElementNames == null) { return(false); } AnalysisResultsType analysisResultsType = null; DerivedDataType firstDerivedDataType = null; DerivedDataType tempDerivedDataType = null; RadMeasurementType radMeasurementType = null; List <DerivedDataType> derivedDataTypes = new List <DerivedDataType>(); List <RadMeasurementType> radMeasureTypes = new List <RadMeasurementType>(); bool analysisFound = false, firstDerivedDataFound = false; for (int i = 0; i < itemsElementNames.Count(); i += 1) { if (analysisFound == false) { if (itemsElementNames[i] == ItemsChoiceType2.AnalysisResults) { analysisResultsType = radInstrumentDataType.Items[i] as AnalysisResultsType; if (analysisResultsType.NuclideAnalysisResults != null) { analysisFound = true; } } } if (itemsElementNames[i] == ItemsChoiceType2.DerivedData) { if (firstDerivedDataFound == false) { firstDerivedDataType = radInstrumentDataType.Items[i] as DerivedDataType; // Check if correct node if (firstDerivedDataType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { derivedDataTypes.Add(firstDerivedDataType); } firstDerivedDataFound = true; } else { tempDerivedDataType = radInstrumentDataType.Items[i] as DerivedDataType; if (tempDerivedDataType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { derivedDataTypes.Add(tempDerivedDataType); } } } if (itemsElementNames[i] == ItemsChoiceType2.RadMeasurement) { radMeasurementType = radInstrumentDataType.Items[i] as RadMeasurementType; // Check if correct node if (radMeasurementType.MeasurementClassCode == MeasurementClassCodeSimpleType.Foreground) { radMeasureTypes.Add(radMeasurementType); } } } if (firstDerivedDataFound == true) { // Get StartTime deviceData.StartDateTime = firstDerivedDataType.StartDateTime; // Get MeasureTime deviceData.MeasureTime = new TimeSpan(0, 0, 0); foreach (DerivedDataType item in derivedDataTypes) { string time = item.RealTimeDuration.Remove(0, 2); var mIndex = time.IndexOf("M"); var sIndex = time.IndexOf("S"); var periodIndex = time.IndexOf("."); if (mIndex != -1 && periodIndex != -1 && sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, 0, int.Parse(time.Substring(0, mIndex)), int.Parse(time.Substring(mIndex + 1, periodIndex - mIndex - 1)), int.Parse(time.Substring(periodIndex + 1, sIndex - periodIndex - 1)))); } else if (mIndex != -1 && sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, int.Parse(time.Substring(0, mIndex)), int.Parse(time.Substring(mIndex + 1, sIndex - mIndex - 1)))); } else if (mIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, int.Parse(time.Substring(0, mIndex)), 0)); } else if (periodIndex != -1 && sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, 0, 0, int.Parse(time.Substring(0, periodIndex)), int.Parse(time.Substring(periodIndex + 1, sIndex - periodIndex - 1)))); } else if (sIndex != -1) { deviceData.MeasureTime = deviceData.MeasureTime.Add(new TimeSpan(0, 0, int.Parse(time.Substring(0, sIndex)))); } } } // Get CountRate int sumCountData = 0; foreach (RadMeasurementType item in radMeasureTypes) { foreach (GrossCountsType grossCounts in item.GrossCounts) { int num; bool castSuccess = int.TryParse(grossCounts.CountData, out num); if (castSuccess) { sumCountData += num; } } } deviceData.CountRate = sumCountData; //////// Need to edit this section to properly retrieve the nuclide results from analysisResults //////// // Get Identified Nuclides if (analysisFound == true) { var nuclides = analysisResultsType.NuclideAnalysisResults.Nuclide; for (int i = 0; i < nuclides.Count(); i += 1) { var elementNames = nuclides[i].ItemsElementName; for (int c = 0; c < elementNames.Count(); c += 1) { if (elementNames[c] == ItemsChoiceType.NuclideIDConfidenceValue) { deviceData.Nuclides[i] = new NuclideID(nuclides[i].NuclideName, (double)nuclides[i].Items[c]); } } } } } catch (Exception ex) { fileErrors.Add(new KeyValuePair <string, string>(Path.GetFileName(deviceData.FileName), ex.Message)); ErrorsOccurred = true; return(false); } return(true); }