/// <summary> /// Defines PointSourceBase class /// </summary> /// <param name="polarAngleEmissionRange">Polar angle range</param> /// <param name="azimuthalAngleEmissionRange">Azimuthal angle range</param> /// <param name="direction">Point source emitting direction</param> /// <param name="pointLocation">New position</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected PointSourceBase( DoubleRange polarAngleEmissionRange, DoubleRange azimuthalAngleEmissionRange, Direction direction, Position pointLocation, int initialTissueRegionIndex) { if (direction == null) { direction = SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(); } if (pointLocation == null) { pointLocation = SourceDefaults.DefaultPosition.Clone(); } _polarAngleEmissionRange = polarAngleEmissionRange.Clone(); _azimuthalAngleEmissionRange = azimuthalAngleEmissionRange.Clone(); _pointLocation = pointLocation.Clone(); _direction = direction.Clone(); _rotationAndTranslationFlags = new SourceFlags( direction != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), pointLocation != SourceDefaults.DefaultPosition.Clone(), false); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines LineSourceBase class /// </summary> /// <param name="lineLength">The length of the line source</param> /// <param name="sourceProfile">Source profile type</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="beamRotationFromInwardNormal">Beam rotation from inward normal</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected LineSourceBase( double lineLength, ISourceProfile sourceProfile, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, PolarAzimuthalAngles beamRotationFromInwardNormal, int initialTissueRegionIndex) { if (newDirectionOfPrincipalSourceAxis == null) { newDirectionOfPrincipalSourceAxis = SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(); } if (translationFromOrigin == null) { translationFromOrigin = SourceDefaults.DefaultPosition.Clone(); } if (beamRotationFromInwardNormal == null) { beamRotationFromInwardNormal = SourceDefaults.DefaultBeamRoationFromInwardNormal.Clone(); } _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), beamRotationFromInwardNormal != SourceDefaults.DefaultBeamRoationFromInwardNormal.Clone()); _lineLength = lineLength; _sourceProfile = sourceProfile; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _beamRotationFromInwardNormal = beamRotationFromInwardNormal.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines SurfaceEmittingTubularSourceBase class /// </summary> /// <param name="tubeRadius">Tube radius</param> /// <param name="tubeHeightZ">Tube height</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected SurfaceEmittingTubularSourceBase( double tubeRadius, double tubeHeightZ, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), false); _tubeRadius = tubeRadius; _tubeHeightZ = tubeHeightZ; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Read text data file that has input and output data /// </summary> public void read_data() { string testpara = "../../../../matlab/test/monte_carlo/source_test_data_generation/UnitTests_SourceToolbox.txt"; if (File.Exists(testpara)) { using (TextReader reader = File.OpenText(testpara)) { string text = reader.ReadToEnd(); string[] bits = text.Split('\t'); for (int i = 0; i < 140; i++) { _tp[i] = double.Parse(bits[i]); } reader.Close(); } } _position = new Position(_tp[0], _tp[1], _tp[2]); _direction = new Direction(_tp[3], _tp[4], _tp[5]); _translation = new Position(_tp[6], _tp[7], _tp[8]); _angPair = new PolarAzimuthalAngles(_tp[9], _tp[10]); _polRange = new DoubleRange(_tp[11], _tp[12]); _aziRange = new DoubleRange(_tp[13], _tp[14]); _angRot = new ThreeAxisRotation(_tp[15], _tp[16], _tp[17]); _flags = new SourceFlags(true, true, true); _aParameter = _tp[18]; _bParameter = _tp[19]; _cParameter = _tp[20]; _lengthX = _tp[21]; _widthY = _tp[22]; _heightZ = _tp[23]; _innerRadius = _tp[24]; _outerRadius = _tp[25]; _bdFWHM = _tp[26]; _limitL = _tp[27]; _limitU = _tp[28]; _factor = _tp[29]; _polarAngle = _tp[30]; }
/// <summary> /// Defines EllipticalSourceBase class /// </summary> /// <param name="aParameter">"a" parameter of the ellipse source</param> /// <param name="bParameter">"b" parameter of the ellipse source</param> /// <param name="sourceProfile">Source Profile {Flat / Gaussian}</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="beamRotationFromInwardNormal">Polar Azimuthal Rotational Angle of inward Normal</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected EllipticalSourceBase( double aParameter, double bParameter, ISourceProfile sourceProfile, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, PolarAzimuthalAngles beamRotationFromInwardNormal, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), beamRotationFromInwardNormal != SourceDefaults.DefaultBeamRoationFromInwardNormal.Clone()); _aParameter = aParameter; _bParameter = bParameter; _sourceProfile = sourceProfile; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _beamRotationFromInwardNormal = beamRotationFromInwardNormal.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines VolumetricCuboidalSourceBase class /// </summary> /// <param name="cubeLengthX">The length of the cuboid</param> /// <param name="cubeWidthY">The width of the cuboid</param> /// <param name="cubeHeightZ">The height of the cuboid</param> /// <param name="beamDiameterFWHM">Beam diameter FWHM (-1 for flat beam)</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected VolumetricCuboidalSourceBase( double cubeLengthX, double cubeWidthY, double cubeHeightZ, double beamDiameterFWHM, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), false); _cubeLengthX = cubeLengthX; _cubeWidthY = cubeWidthY; _cubeHeightZ = cubeHeightZ; _beamDiameterFWHM = beamDiameterFWHM; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines SurfaceEmittingCylindricalFiberSourceBase class /// </summary> /// <param name="fiberRadius">Fiber radius</param> /// <param name="fiberHeightZ">Fiber height</param> /// <param name="curvedSurfaceEfficiency">Efficciency of the curved surface (0-1)</param> /// <param name="bottomSurfaceEfficiency">Efficciency of the bottom surface (0-1)</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected SurfaceEmittingCylindricalFiberSourceBase( double fiberRadius, double fiberHeightZ, double curvedSurfaceEfficiency, double bottomSurfaceEfficiency, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), false); _fiberRadius = fiberRadius; _fiberHeightZ = fiberHeightZ; _curvedSurfaceEfficiency = curvedSurfaceEfficiency; _bottomSurfaceEfficiency = bottomSurfaceEfficiency; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines RectangularSourceBase class /// </summary> /// <param name="rectLengthX">The length of the Rectangular Source</param> /// <param name="rectWidthY">The width of the Rectangular Source</param> /// <param name="sourceProfile">Source Profile {Flat / Gaussian}</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="beamRotationFromInwardNormal">Polar Azimuthal Rotational Angle of inward Normal</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected RectangularSourceBase( double rectLengthX, double rectWidthY, ISourceProfile sourceProfile, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, PolarAzimuthalAngles beamRotationFromInwardNormal, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), beamRotationFromInwardNormal != SourceDefaults.DefaultBeamRoationFromInwardNormal.Clone()); _rectLengthX = rectLengthX; _rectWidthY = rectWidthY; _sourceProfile = sourceProfile; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _beamRotationFromInwardNormal = beamRotationFromInwardNormal.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines VolumetricEllipsoidalSourceBase class /// </summary> /// <param name="aParameter">"a" parameter of the ellipsoid source</param> /// <param name="bParameter">"b" parameter of the ellipsoid source</param> /// <param name="cParameter">"c" parameter of the ellipsoid source</param> /// <param name="sourceProfile">Source Profile {Flat / Gaussian}</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected VolumetricEllipsoidalSourceBase( double aParameter, double bParameter, double cParameter, ISourceProfile sourceProfile, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), false); _aParameter = aParameter; _bParameter = bParameter; _cParameter = cParameter; _sourceProfile = sourceProfile; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines CircularSourceBase class /// </summary> /// <param name="innerRadius">The inner radius of the circular source</param> /// <param name="outerRadius">The outer radius of the circular source</param> /// <param name="sourceProfile">Source Profile {Flat / Gaussian}</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="beamRotationFromInwardNormal">Polar Azimuthal Rotational Angle of inward Normal</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected CircularSourceBase( double outerRadius, double innerRadius, ISourceProfile sourceProfile, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, PolarAzimuthalAngles beamRotationFromInwardNormal, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), beamRotationFromInwardNormal != SourceDefaults.DefaultBeamRoationFromInwardNormal.Clone()); _outerRadius = outerRadius; _innerRadius = innerRadius; _sourceProfile = sourceProfile; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _beamRotationFromInwardNormal = beamRotationFromInwardNormal.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
/// <summary> /// Defines SurfaceEmittingCuboidalSourceBase class /// </summary> /// <param name="cubeLengthX">The length of the cube (along x axis)</param> /// <param name="cubeWidthY">The width of the cube (along y axis)</param> /// <param name="cubeHeightZ">The height of the cube (along z axis)</param> /// <param name="sourceProfile">Source Profile {Flat / Gaussian}</param> /// <param name="polarAngleEmissionRange">Polar angle emission range {0 - 90degrees}</param> /// <param name="newDirectionOfPrincipalSourceAxis">New source axis direction</param> /// <param name="translationFromOrigin">New source location</param> /// <param name="initialTissueRegionIndex">Initial tissue region index</param> protected SurfaceEmittingCuboidalSourceBase( double cubeLengthX, double cubeWidthY, double cubeHeightZ, ISourceProfile sourceProfile, DoubleRange polarAngleEmissionRange, Direction newDirectionOfPrincipalSourceAxis, Position translationFromOrigin, int initialTissueRegionIndex) { _rotationAndTranslationFlags = new SourceFlags( newDirectionOfPrincipalSourceAxis != SourceDefaults.DefaultDirectionOfPrincipalSourceAxis.Clone(), translationFromOrigin != SourceDefaults.DefaultPosition.Clone(), false); _cubeLengthX = cubeLengthX; _cubeWidthY = cubeWidthY; _cubeHeightZ = cubeHeightZ; _sourceProfile = sourceProfile; _newDirectionOfPrincipalSourceAxis = newDirectionOfPrincipalSourceAxis.Clone(); _polarAngleEmissionRange = polarAngleEmissionRange.Clone(); _translationFromOrigin = translationFromOrigin.Clone(); _initialTissueRegionIndex = initialTissueRegionIndex; }
public TransferStudentData(XmlElement response) { this.DailyBehaviorData = new DailyBehaviorData(); this.GroupActivityData = new GroupActivityData(); this.PublicServiceData = new PublicServiceData(); this.SchoolSpecialData = new SchoolSpecialData(); this.DailyLifeRecommendData = new DailyLifeRecommendData(); this.AbsenceData = new AbsenceData(); this.MeritStatisticData = new MeritStatisticData(); this.SourceFlags = new List <SourceFlag>(); if (response == null) { return; } foreach (XmlNode node in response.SelectNodes("SemesterMoralScore")) { string schoolyear = node.SelectSingleNode("SchoolYear").InnerText; string semester = node.SelectSingleNode("Semester").InnerText; SourceFlag sourceFlag = new SourceFlag(); sourceFlag.SchoolYear = schoolyear; sourceFlag.Semester = semester; XmlElement sourceElement; if (node.SelectSingleNode("Summary").ChildNodes.Count > 0) { sourceFlag.Flag = Flag.Summary; sourceElement = (XmlElement)node.SelectSingleNode("Summary"); sourceFlag.SourceElement = sourceElement; } else { sourceFlag.Flag = Flag.IntialSummary; sourceElement = (XmlElement)node.SelectSingleNode("InitialSummary"); sourceFlag.SourceElement = sourceElement; } SourceFlags.Add(sourceFlag); //處理日常生活表現 foreach (XmlNode itemNode in node.SelectNodes("TextScore/DailyBehavior/Item")) { XmlElement itemElement = (XmlElement)itemNode; DailyBehaviorItem item = new DailyBehaviorItem(); item.SchoolYear = schoolyear; item.Semester = semester; item.Degree = itemElement.GetAttribute("Degree"); item.Name = itemElement.GetAttribute("Name"); item.Index = itemElement.GetAttribute("Index"); this.DailyBehaviorData.Items.Add(item); } //處理團隊活動表現 foreach (XmlNode itemNode in node.SelectNodes("TextScore/GroupActivity/Item")) { XmlElement itemElement = (XmlElement)itemNode; GroupActivityItem item = new GroupActivityItem(); item.SchoolYear = schoolyear; item.Semester = semester; item.Degree = itemElement.GetAttribute("Degree"); item.Name = itemElement.GetAttribute("Name"); item.Text = itemElement.GetAttribute("Description"); this.GroupActivityData.Items.Add(item); } //處理公共服務表現 foreach (XmlNode itemNode in node.SelectNodes("TextScore/PublicService/Item")) { XmlElement itemElement = (XmlElement)itemNode; PublicServiceItem item = new PublicServiceItem(); item.SchoolYear = schoolyear; item.Semester = semester; item.Name = itemElement.GetAttribute("Name"); item.Description = itemElement.GetAttribute("Description"); this.PublicServiceData.Items.Add(item); } //處理校內外特殊表現 foreach (XmlNode itemNode in node.SelectNodes("TextScore/SchoolSpecial/Item")) { XmlElement itemElement = (XmlElement)itemNode; SchoolSpecialItem item = new SchoolSpecialItem(); item.SchoolYear = schoolyear; item.Semester = semester; item.Name = itemElement.GetAttribute("Name"); item.Description = itemElement.GetAttribute("Description"); this.SchoolSpecialData.Items.Add(item); } //日常生活表現具體建議 //foreach (XmlNode itemNode in node.SelectNodes("TextScore/DailyLifeRecommend/Item")) foreach (XmlNode itemNode in node.SelectNodes("TextScore/DailyLifeRecommend")) { XmlElement itemElement = (XmlElement)itemNode; DailyLifeRecommendItem item = new DailyLifeRecommendItem(); item.SchoolYear = schoolyear; item.Semester = semester; item.Name = itemElement.GetAttribute("Name"); item.Description = itemElement.GetAttribute("Description"); this.DailyLifeRecommendData.Items.Add(item); } //缺曠統計 foreach (XmlNode itemNode in sourceElement.SelectNodes("AttendanceStatistics/Absence")) { XmlElement itemElement = (XmlElement)itemNode; AbsenceItem item = new AbsenceItem(); item.SchoolYear = schoolyear; item.Semester = semester; item.Name = itemElement.GetAttribute("Name"); item.PeriodType = itemElement.GetAttribute("PeriodType"); int count; if (!int.TryParse(itemElement.GetAttribute("Count"), out count)) { count = 0; } item.Count = count; this.AbsenceData.Items.Add(item); } //懲統計 foreach (XmlNode itemNode in sourceElement.SelectNodes("DisciplineStatistics/Demerit")) { XmlElement itemElement = (XmlElement)itemNode; MeritStatisticItem itemA = new MeritStatisticItem(); itemA.SchoolYear = schoolyear; itemA.Semester = semester; itemA.MeritType = "大過"; int count; if (!int.TryParse(itemElement.GetAttribute("A"), out count)) { count = 0; } itemA.Count = count; this.MeritStatisticData.Items.Add(itemA); MeritStatisticItem itemB = new MeritStatisticItem(); itemB.SchoolYear = schoolyear; itemB.Semester = semester; itemB.MeritType = "小過"; if (!int.TryParse(itemElement.GetAttribute("B"), out count)) { count = 0; } itemB.Count = count; this.MeritStatisticData.Items.Add(itemB); MeritStatisticItem itemC = new MeritStatisticItem(); itemC.SchoolYear = schoolyear; itemC.Semester = semester; itemC.MeritType = "警告"; if (!int.TryParse(itemElement.GetAttribute("C"), out count)) { count = 0; } itemC.Count = count; this.MeritStatisticData.Items.Add(itemC); } //獎統計 foreach (XmlNode itemNode in sourceElement.SelectNodes("DisciplineStatistics/Merit")) { XmlElement itemElement = (XmlElement)itemNode; MeritStatisticItem itemA = new MeritStatisticItem(); itemA.SchoolYear = schoolyear; itemA.Semester = semester; itemA.MeritType = "大功"; int count; if (!int.TryParse(itemElement.GetAttribute("A"), out count)) { count = 0; } itemA.Count = count; this.MeritStatisticData.Items.Add(itemA); MeritStatisticItem itemB = new MeritStatisticItem(); itemB.SchoolYear = schoolyear; itemB.Semester = semester; itemB.MeritType = "小功"; if (!int.TryParse(itemElement.GetAttribute("B"), out count)) { count = 0; } itemB.Count = count; this.MeritStatisticData.Items.Add(itemB); MeritStatisticItem itemC = new MeritStatisticItem(); itemC.SchoolYear = schoolyear; itemC.Semester = semester; itemC.MeritType = "嘉獎"; if (!int.TryParse(itemElement.GetAttribute("C"), out count)) { count = 0; } itemC.Count = count; this.MeritStatisticData.Items.Add(itemC); } } }