private void GetCellsInLTECalcCellsInfoCollection(LTECalcCellsInfoCollection info, List<Transceiver> cells) { foreach (Transceiver tranceiver in info.GetTranceiverList()) { if (!cells.Contains(tranceiver)) { cells.Add(tranceiver); } } }
public LTECalcCellsInfoCollection GetCalculateCellsInfo(List<Transceiver> allLTECells, GeoPolygonRegion polygon, float resolution) { LTECalcCellsInfoCollection cellsInfo = new LTECalcCellsInfoCollection(); this.GetPolygonRectangle(polygon, resolution); bool flag = false; foreach (Transceiver transceiver in allLTECells) { foreach (IACell cell in transceiver.Cells) { flag |= !float.IsNegativeInfinity((cell as LTECell).DlActualTxPower); } if ((transceiver.Active & flag) & (this.m_GeoInfo.GetValueByGeoXYPoint(transceiver.Parent.X, transceiver.Parent.Y, DemDataType.Height) > -32768)) { this.GetOneCellInfo(resolution, cellsInfo, transceiver); } flag = false; } return cellsInfo; }
public PredictionDataManager(PredictionGroup pg, PredictionConfig cfg, OtherSubSysInterface interfaces, ProgressHandle pgrsHandle, string savepath, string projectName) { this.m_Interfaces = interfaces; this.m_Group = pg; this.m_PredictionCfg = cfg; this.m_ProgressHandle = pgrsHandle; this.m_DLBLER = pg.DLBLER; this.m_ULBLER = pg.ULBLER; this.m_CalcLTECells = new LTECalcCellsInfoCollection(); this.m_CaseDataManager = new CaseDataManager(this.m_Group, savepath, projectName); this.m_AllPolygonsCellCalcInfo = new List<LTECalcCellsInfoCollection>(); this.m_NeedCalActualRxIntf = false; this.m_NeedCalMaxRxIntf = false; this.m_NeedCalSecondMaxRSRP = false; this.m_NeedCalSymbolRSRP = false; this.m_NeedCalOverlapping = false; this.NeedCreateActualRxPowerValueMatrix(); this.NeedCreateMaxRxPowerValueMartix(); this.NeedCalSecondMaxRSRP(); this.NeedCalSymbol_RSRP(); this.NeedCalOverlapping(); this.SetSavingPath(savepath, projectName); }
private void GetIndexCoodinate(LTECalcCellsInfoCollection cellsInfo, Transceiver cell, float resolution) { int cellLeftTopColumn = (int) ((this.m_cellLeftTop.X - this.m_polygonLeftTop.X) / ((double) resolution)); int cellLeftTopRow = (int) ((this.m_polygonLeftTop.Y - this.m_cellLeftTop.Y) / ((double) resolution)); int cellRightBottomColumn = (int) Math.Ceiling((double) ((this.m_cellRightBottom.X - this.m_polygonLeftTop.X) / ((double) resolution))); int cellRightBottomRow = (int) Math.Ceiling((double) ((this.m_polygonLeftTop.Y - this.m_cellRightBottom.Y) / ((double) resolution))); this.GetCorrectIndex(ref cellLeftTopRow, ref cellLeftTopColumn, ref cellRightBottomRow, ref cellRightBottomColumn); LTECellCalcInfo cellInfo = new LTECellCalcInfo(cell, cellLeftTopRow, cellLeftTopColumn, cellRightBottomRow - 1, cellRightBottomColumn - 1); this.GetMaxRSPowerCarrier(cellInfo); cellsInfo.TranceiverInfos.Add(cellInfo); }
private void GetOneCellInfo(float resolution, LTECalcCellsInfoCollection cellsInfo, Transceiver cell) { float maxCalcRadius = this.GetMaxCalcRadius(cell); this.m_cellPoint.X = cell.Parent.X; this.m_cellPoint.Y = cell.Parent.Y; this.m_cellLeftTop.X = this.m_cellPoint.X - maxCalcRadius; this.m_cellLeftTop.Y = this.m_cellPoint.Y + maxCalcRadius; this.m_cellRightBottom.X = this.m_cellPoint.X + maxCalcRadius; this.m_cellRightBottom.Y = this.m_cellPoint.Y - maxCalcRadius; if (this.IsCellInCalcZone(maxCalcRadius)) { this.GetIndexCoodinate(cellsInfo, cell, resolution); } }
private void setGroupValidCellIDList(LTECalcCellsInfoCollection cellCollection) { this.m_Group.CellIDValideListForBestServer.Clear(); this.m_Group.CellIDValideListForStudyType.Clear(); if (this.m_Group.ChannelIndexDic.Count == 0) { this.m_Interfaces.EventViewService.WriteLog(LTEPredictionResource.PREDICTION_NOCHANNELINDEX, Huawei.UNet.Frame.Interface.LogLevel.Info); } if (this.m_Group.FreqBandIdList.Count == 0) { this.m_Interfaces.EventViewService.WriteLog(LTEPredictionResource.PREDICTION_NOFREBAND, Huawei.UNet.Frame.Interface.LogLevel.Info); } foreach (LTECellCalcInfo info in cellCollection.TranceiverInfos) { if (this.m_Group.FreqBandIdList.Contains(info.RSMaxCarrier.FreqBand.ID)) { if (!this.m_Group.ChannelIndexDic.ContainsKey(info.RSMaxCarrier.FreqBand.ID)) { continue; } if (this.m_Group.ChannelIndexDic[info.RSMaxCarrier.FreqBand.ID].Contains(info.RSMaxCarrier.ChannelIndex)) { this.m_Group.CellIDValideListForBestServer.Add(info.Tanceiver.ID); } } if (this.checkCellBandForStudyType(info)) { this.m_Group.CellIDValideListForStudyType.Add(info.Tanceiver.ID); } } }
private void InitialCalcCells(GeoPolygonRegion region) { List<Transceiver> list = this.m_Interfaces.INet.TranceiverList; DataPrepareCalculate calculate = new DataPrepareCalculate(); //this.m_CalcLTECells = this.m_Interfaces.CellFilterBuilder.GetCellFilter().GetCalculateCellsInfo(list, region, this.m_Group.Resolution); this.m_CalcLTECells = this.m_Interfaces.CellFilterBuilder.GetCellFilter().GetCalculateCellsInfo(list, region, this.m_Group.Resolution); this.m_Group.CellInfos = this.m_CalcLTECells.TranceiverInfos; calculate.CreateCarrierDictionary(this.m_CalcLTECells, this.m_Group); this.setGroupValidCellIDList(this.m_CalcLTECells); this.m_AllPolygonsCellCalcInfo.Add(this.m_CalcLTECells); }
private void InitialCalCarriers(LTECalcCellsInfoCollection calcCellColl) { bool flag = this.NeedULMimoAndULDemodulation(); bool flag2 = this.NeedDLMimoAndULDemodulation(); float uLBLER = ((this.m_Group.TrafficService as UnionPsService).PSServiceDic[NetWorkType.LTE] as LTEService).ULBLER; float dLBLER = ((this.m_Group.TrafficService as UnionPsService).PSServiceDic[NetWorkType.LTE] as LTEService).DLBLER; foreach (LTECellCalcInfo info in calcCellColl.TranceiverInfos) { this.GetAntConfig(info.Tanceiver); double num3 = this.CalculateNoiseFigureOfBts(info.Tanceiver); foreach (LTECell cell in info.Tanceiver.Cells) { FrequencyBand freqBand = cell.FreqBand; //freqBand.set_FrequcyBandUsableWidth(UnitTrans.todB((int)(freqBand.RBNum * 0x2bf20))); //freqBand.set_RSNumOfBandWidth(UnitTrans.todB((int)(freqBand.RBNum * 2))); //freqBand.set_RENumOfBandWidth(UnitTrans.todB((int)(freqBand.RBNum * 12))); //freqBand.set_NoisePowerOfBandWidth(this.GetNoisePower(freqBand)); //cell.set_SpaceBetweenDlAndUL(this.m_Interfaces.IPropagationData.GetDeltaLossFrmDLToUL(info.get_Tanceiver(), cell)[0]); //cell.set_DataReAndRsReOffSet(this.GetDataReRsReOffSet(cell, freqBand)); //cell.set_NoiseFigureOfBts(num3); //cell.set_BandWidthAndStartFrequecyKey(cell.FreqBand.BandWidth + "_" + ((cell.FreqBand.BandWidth * cell.ChannelIndex) + cell.FreqBand.DLFrequency)); //cell.set_NeighbourBandWidth_Larger_Key(cell.FreqBand.BandWidth + "_" + ((cell.FreqBand.BandWidth * (cell.ChannelIndex + 1)) + cell.FreqBand.DLFrequency)); //cell.set_NeighbourBandWidth_Smaller_Key(cell.FreqBand.BandWidth + "_" + ((cell.FreqBand.BandWidth * (cell.ChannelIndex - 1)) + cell.FreqBand.DLFrequency)); if (flag2 || flag) { this.m_Interfaces.ITrafficMCS.InitialMcsArr(); } if (flag) { this.GetULMimo(cell); this.GetULDemodulationTable(cell, uLBLER); } if (flag2) { this.GetDLMimo(cell); this.GetDLDemodulationTable(cell, dLBLER); } } } }
private void GetBlockCellInfoColl(int blockCount, GeoPolygonRegion region) { this.m_BlockCellInfoArr = new List<PredictionBlockCellInfoColl>(); double maxValue = double.MaxValue; double minValue = double.MinValue; double bottom = double.MaxValue; double top = double.MinValue; ICellFilter cellFilter = this.m_Interfaces.CellFilterBuilder.GetCellFilter(); GeoPolygonRegion regionRectangle = cellFilter.GetRegionRectangle(region, this.m_Group.Resolution); List<Transceiver> list = new List<Transceiver>(); foreach (LTECellCalcInfo info in this.m_CalcLTECells) { list.Add(info.Tanceiver); } int num5 = (int)((regionRectangle.Top - regionRectangle.Bottom) / ((double)this.m_Group.Resolution)); int num6 = num5 % blockCount; int num7 = num5 / blockCount; for (int i = 0; i < blockCount; i++) { maxValue = regionRectangle.Left; minValue = regionRectangle.Right; top = regionRectangle.Top - ((i * num7) * this.m_Group.Resolution); if (i == (blockCount - 1)) { bottom = regionRectangle.Top - ((((i * num7) + num7) + num6) * this.m_Group.Resolution); } else { bottom = regionRectangle.Top - (((i * num7) + num7) * this.m_Group.Resolution); } GeoXYRect geoXYRect = new GeoXYRect(maxValue, minValue, bottom, top); GeoPolygon geoPolygon = new GeoPolygon(geoXYRect); GeoPolygonRegion region3 = new GeoPolygonRegion(); region3.AddGeoPolygon(geoPolygon); PredictionBlockCellInfoColl item = new PredictionBlockCellInfoColl(); item.BlockIndex = i; LTECalcCellsInfoCollection infos = new LTECalcCellsInfoCollection(); infos = cellFilter.GetCalculateCellsInfo(list, region3, this.m_Group.Resolution); item.CalCellColl = infos; this.m_BlockCellInfoArr.Add(item); } }