CMsrResultItems.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. using OTSCLRINTERFACE;
  2. using System.Collections.Generic;
  3. namespace OTSModelSharp
  4. {
  5. //public double DEFAULT_RADIO = 1.0;
  6. using CMsrResultItemsList = List<CMsrResultItem>;
  7. public class CMsrResultItem
  8. { // Type ID
  9. private int m_nTypeId;
  10. // area (micros)
  11. private double m_nArea;
  12. // particle number
  13. private System.UInt32 m_nNumber;
  14. private string m_sName;
  15. //---------------------public----------------------
  16. public CMsrResultItem()//constructor
  17. {
  18. Init();
  19. }
  20. public CMsrResultItem(CMsrResultItem a_oSource)
  21. {
  22. Duplicate(a_oSource);
  23. }
  24. public bool Equals(CMsrResultItem a_oSource)
  25. {
  26. return m_nTypeId == a_oSource.m_nTypeId &&
  27. m_nArea == a_oSource.m_nArea &&
  28. m_nNumber == a_oSource.m_nNumber&&
  29. m_sName == a_oSource.m_sName;
  30. }
  31. //serialization
  32. // Type ID
  33. public int GetTypeId()
  34. {
  35. return m_nTypeId;
  36. }
  37. public void SetTypeId(int a_nTypeId)
  38. {
  39. m_nTypeId = a_nTypeId;
  40. }
  41. // area (micros)
  42. public double GetArea()
  43. {
  44. return m_nArea;
  45. }
  46. public void SetArea(double a_nArea)
  47. {
  48. m_nArea = a_nArea;
  49. }
  50. // particle number
  51. public System.UInt32 GetNumber()
  52. {
  53. return m_nNumber;
  54. }
  55. public void SetNumber(System.UInt32 a_nNumber)
  56. {
  57. m_nNumber = a_nNumber;
  58. }
  59. public string GetName()
  60. {
  61. return m_sName;
  62. }
  63. public void SetName(string val)
  64. {
  65. m_sName = val;
  66. }
  67. //---------------------protected---------------------
  68. // initialization
  69. protected void Init()
  70. {
  71. m_nTypeId = -1;
  72. m_nArea = 0;
  73. m_nNumber = 0;
  74. m_sName = "";
  75. }
  76. //duplication
  77. protected void Duplicate(CMsrResultItem a_oSource)
  78. {
  79. // initialization
  80. Init();
  81. // copy data over
  82. m_nTypeId = a_oSource.m_nTypeId;
  83. m_nArea = a_oSource.m_nArea;
  84. m_nNumber = a_oSource.m_nNumber;
  85. m_sName = a_oSource.m_sName;
  86. }
  87. }
  88. // CMsrResults command target
  89. public class CMsrResultItems
  90. {
  91. public double DEFAULT_RADIO = 1.0;
  92. // radio
  93. double m_dRadio;
  94. // measured area (micros)
  95. double m_nMeasuredArea;
  96. // result items list
  97. List<CMsrResultItem> m_listResultItems;
  98. //-----------------public-----------------
  99. public CMsrResultItems()
  100. {
  101. // initialization
  102. Init();
  103. }
  104. public CMsrResultItems(CMsrResultItems a_oSource)
  105. {
  106. // copy data over
  107. Duplicate(a_oSource);
  108. }
  109. public double GetRatio()
  110. {
  111. return m_dRadio;
  112. }
  113. public void SetRatio(double a_dRadio)
  114. {
  115. m_dRadio = a_dRadio;
  116. }
  117. // measured area (micros)
  118. public double GetMeasuredArea()
  119. {
  120. return m_nMeasuredArea;
  121. }
  122. public void SetMeasuredArea(double a_nMeasuredArea)
  123. {
  124. m_nMeasuredArea = a_nMeasuredArea;
  125. }
  126. public void CumulateMeasuredArea(double a_nMeasuredArea)
  127. {
  128. m_nMeasuredArea += a_nMeasuredArea;
  129. }
  130. public List<CMsrResultItem> GetResultItems()
  131. {
  132. return m_listResultItems;
  133. }
  134. public void SetResultItems(List<CMsrResultItem> a_listResultItems)
  135. {
  136. // set results item list
  137. m_listResultItems.Clear();
  138. foreach (CMsrResultItem poResultItem in a_listResultItems)
  139. {
  140. CMsrResultItem cMsrResultItem = poResultItem;
  141. m_listResultItems.Add(cMsrResultItem);
  142. }
  143. }
  144. public double GetTotalParticleArea()
  145. {
  146. double nArea = 0;
  147. foreach (CMsrResultItem poResultItem in m_listResultItems)
  148. {
  149. nArea += poResultItem.GetArea();
  150. }
  151. return nArea;
  152. }
  153. public System.UInt32 GetTotalParticleNumber()
  154. {
  155. System.UInt32 nParticleNum = 0;
  156. foreach (CMsrResultItem poResultItem in m_listResultItems)
  157. {
  158. nParticleNum += poResultItem.GetNumber();
  159. }
  160. return nParticleNum;
  161. }
  162. // cumulate measure results
  163. public void CumulateMeasureResult(COTSParticleClr a_poResultItem)
  164. {
  165. var itr= m_listResultItems.Find((item) => { return a_poResultItem.GetClassifyId() == item.GetTypeId(); });
  166. if (itr != null)
  167. {
  168. itr.SetArea(a_poResultItem.GetActualArea() + itr.GetArea());
  169. itr.SetNumber(itr.GetNumber() + 1);
  170. }
  171. else
  172. {
  173. CMsrResultItem pMsrResultItem = new CMsrResultItem();
  174. pMsrResultItem.SetTypeId(a_poResultItem.GetClassifyId());
  175. pMsrResultItem.SetArea(a_poResultItem.GetActualArea());
  176. pMsrResultItem.SetNumber(1);
  177. pMsrResultItem.SetName(a_poResultItem.GetTypeName());
  178. m_listResultItems.Add(pMsrResultItem);
  179. }
  180. }
  181. //-----------------protected---------------
  182. protected bool GetID (CMsrResultItem poResultItem ,int a_TypeId)
  183. {
  184. if (poResultItem.GetTypeId() == a_TypeId)
  185. {
  186. return true;
  187. }
  188. else
  189. {
  190. return false;
  191. }
  192. }
  193. // initialization
  194. protected void Init()
  195. {
  196. m_dRadio = DEFAULT_RADIO;
  197. m_nMeasuredArea = 0;
  198. if (m_listResultItems != null)
  199. {
  200. m_listResultItems.Clear();
  201. }
  202. else
  203. {
  204. m_listResultItems = new CMsrResultItemsList();
  205. }
  206. }
  207. // duplication
  208. protected void Duplicate(CMsrResultItems a_oSource)
  209. {
  210. // initialization
  211. Init();
  212. // copy data over
  213. m_dRadio = a_oSource.m_dRadio;
  214. m_nMeasuredArea = a_oSource.m_nMeasuredArea;
  215. foreach (CMsrResultItem poResultItem in a_oSource.m_listResultItems)
  216. {
  217. CMsrResultItem cMsrResultItem = poResultItem;
  218. m_listResultItems.Add(cMsrResultItem);
  219. }
  220. }
  221. }
  222. }