Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }