/// <summary> /// set PMT filters /// </summary> /// <param name="filters">null for default filters</param> private void SetFilters(Type laserCfgType, Layout layout, string[] filters = null) { // update filters if (filters != null) { for (int i = 0; i < _list.Length && i < filters.Length; i++) { _list[i].Filter = Exist(i) ? filters[i] : ""; } } else { var names = WaveLengthHelper.GetPMTDefaultNames(laserCfgType, layout); for (int i = 0; i < _list.Length; i++) { _list[i].Filter = Exist(i) ? names[(int)_list[i].ID] : ""; } } }
public void Set(Type laserCfgType, bool[] exists = null, bool firmwarePosition = true, Layout layout = Layout.Legacy, string[] filters = null, string[] mirrors = null) { _layout = layout; _list = new PMTInfo[8]; // most 8 pmts in NovoCyte for (int i = 0; i < _list.Length; i++) { _list[i] = new PMTInfo(DetectionChannel.NotExist); } // set according to laser config type if (layout == Layout.FL16 && filters != null) { for (int i = 0; i < _list.Length && i < filters.Length; i++) { _list[i].ID = WaveLengthHelper.GetDetectionChannelFromFilter(filters[i]); } } else if (laserCfgType == Type.nm405nm561nm488) { _list[0].ID = DetectionChannel.nm450; _list[1].ID = DetectionChannel.nm585; _list[2].ID = DetectionChannel.nm675; _list[3].ID = DetectionChannel.nm780; _list[4].ID = DetectionChannel.nm530; _list[5].ID = DetectionChannel.nm615; } else if (laserCfgType == Type.nm488nm561nm640) { _list[0].ID = DetectionChannel.nm585; _list[1].ID = DetectionChannel.nm615; _list[2].ID = DetectionChannel.nm695; _list[3].ID = DetectionChannel.nm780; _list[4].ID = DetectionChannel.nm530; _list[5].ID = DetectionChannel.nm675; } else // 3000 or 3002 or 3005 { if (layout == Layout.V6B4R3) // 3002(V6B4R3) { _list[0].ID = DetectionChannel.nm530; _list[1].ID = DetectionChannel.nm585; _list[2].ID = DetectionChannel.nm725; // D firmware, PMT3 is 725nm _list[3].ID = DetectionChannel.nm780; _list[4].ID = DetectionChannel.nm450; _list[5].ID = DetectionChannel.nm675; } else if (layout == Layout.Legacy || filters == null) // 3000 or default 3005 or nm561nm488nm640, nm405nm488nm640 { _list[0].ID = DetectionChannel.nm530; _list[1].ID = DetectionChannel.nm585; _list[2].ID = DetectionChannel.nm675; _list[3].ID = DetectionChannel.nm780; _list[4].ID = DetectionChannel.nm450; _list[5].ID = DetectionChannel.nm615; } } // update according to exists array if (exists != null) { for (int i = 0; i < _list.Length; i++) { int index = firmwarePosition ? i : (int)_list[i].ID; if (_list[i].ID != DetectionChannel.NotExist && !exists[index]) { _list[i].ID = DetectionChannel.NotExist; } } } SetFilters(laserCfgType, layout, filters); }