예제 #1
0
 /// <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] : "";
         }
     }
 }
예제 #2
0
        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);
        }