﻿#0) More information on formula syntax: http://utran01.epa.ericsson.se/itkwiki/ViewWritersGuide/AppendixII
#1) Any text starting with a '#' is treated as a comment and discarded
#2) Each formula is split into the formula result variable name (part before the '=' sign) and the formula expression (the part after the '=' sign).
#3) Any reference in the formula expression to a counter name of other formula name is replaced by a perl variable reference
#4) The special names sum_<countername>, sum_time_<countername> and sum_mo_<countername> are replaced by a perl reference to variable containing counter aggregates
#5) Each formula expression is then evaluated using perl 'eval'. This means that the syntax of the expressions is the same as that of perl - you can use any perl operators & functions.
#6) The order in which the formulas are defined does not have any importance, a formula can refer to other formulas defined further down in the file
#7) The formula names should not start with "pm"

# Compliant to KPI Measurement Description 5/1550-CSH 103 704 PAC16 and N19Q2
# https://erilink.ericsson.se/eridoc/erl/objectId/09004cff877db904?docno=5/1550-CSH103704Uen&action=current&format=msw8

# Accessibility
Acc_CBRA_RandomAccessSuccRate = 100 * pmRadioRaCbSuccMsg3 / pmRadioRaCbAttMsg2
Acc_EndcSetupSuccessRate = ( pmEndcSetupUeSucc / pmEndcSetupUeAtt) * 100 
Acc_EndcSetupRelMnMcgSuccessRate  = ( pmEndcRelMnMcgRelocSucc / pmEndcRelMnMcgRelocAtt ) * 100
Acc_EndcSetupScgUeSuccessRate = ( pmEndcSetupScgUeSucc / pmEndcSetupScgUeAtt ) * 100
Acc_EndcNRDRBSetupSuccessRate =  ( pmEndcNrDrbSetupSucc / pmEndcNrDrbSetupAtt ) * 100

#Retainability
Ret_EndcUeRelAbnormal = pmEndcRelUeAbnormalMenbAct + pmEndcRelUeAbnormalSgnbAct + pmEndcRelUeAbnormalMenb + pmEndcRelUeAbnormalSgnb
Ret_EndcUeRelAbnormalMeNBAb = pmEndcRelUeAbnormalMenbAct + pmEndcRelUeAbnormalMenb
Ret_EndcUeRelAbnormalMeNBAct = pmEndcRelUeAbnormalMenbAct 
Ret_EndcUeRelAbnormalPrimary = pmEndcRelUeAbnormalMenbAct + pmEndcRelUeAbnormalSgnbAct
Ret_EndcUeRelAbnormalSgNBAb = pmEndcRelUeAbnormalSgnbAct +  pmEndcRelUeAbnormalSgnb 
Ret_EndcUeRelTotal = pmEndcRelUeNormal + pmEndcRelUeAbnormalMenbAct + pmEndcRelUeAbnormalSgnbAct + pmEndcRelUeAbnormalMenb + pmEndcRelUeAbnormalSgnb
Ret_EndcUeRelTotalPrimary = pmEndcRelUeNormal + pmEndcRelUeAbnormalMenb + pmEndcRelUeAbnormalSgnb
Ret_NrLegRetainability = Ret_EndcUERelAbnormal / Ret_EndcUeRelTotal
Ret_NrLegRetainabilityPrimary = Ret_EndcUERelAbnormalPrimary / Ret_EndcUeRelTotalPrimary
Ret_NrlegRetainability_MeNBTriggeredAbnormalActiveNRLegRelease = Ret_EndcUERelAbnormalMeNBAct / Ret_EndcUeRelTotal
Ret_NrlegRetainability_MeNBTriggeredAbnormalNRLegRelease = Ret_EndcUERelAbnormalMeNBAb / Ret_EndcUeRelTotal
Ret_NrlegRetainability_SgNBTriggeredAbnormalNRLegRelease = Ret_EndcUERelAbnormalSgNBAb / Ret_EndcUeRelTotal

#Availability
Av_CellAvail = 100 * ( 900 - ( pmCellDowntimeAuto + pmCellDowntimeMan ) ) / (900)
Av_CellDownMan = 100 * pmCellDowntimeMan / 900
Av_CellDownAuto = 100 * pmCellDowntimeAuto / 900

#Integrity
Int_ActivUEsDl = pmActiveUeDlSum / pmActiveUeDlSamp
Int_ActivUEsUl = pmActiveUeUlSum / pmActiveUeUlSamp
Int_PacketsAcknowledgedToUeC5UInt = pmPdcpPktTransDlAckQos
Int_PacketsDiscardedByRlcAqmReportedByFcC5UInt  = pmPdcpPktTransDlDiscAqmQos
Int_PacketsDiscardedC5UInt = pmPdcpPktDisc 
Int_PacketsDiscardedDueToLateArrivalC5UInt = pmPdcpPktLossUlToDisc5qi
Int_PacketsDiscardedDueToPdcpAqmS1ULink = pmPdcpPktRecDlDiscAqm5qi
Int_PacketsDiscardedOrLostReportedByFcC5UInt = pmPdcpPktTransDlDiscQos
Int_PacketsDiscardedS1ULink = pmPdcpPktRecDlDisc5qi
Int_PacketsDiscardedWithInvalidGtpuHeaderC5UInt = pmPdcpPktDiscGtpu
Int_PacketsDiscardedWithMissingErabContextC5UInt = pmPdcpPktDiscNoCtxt 
Int_PacketsLostOrDiscardedC5UInt = pmPdcpPktLossUl5qi
Int_PacketsLostOrDiscardedDueToLateArrivalC5UInt  = pmPdcpPktLossUlToDisc5qi
Int_PacketsReceivedByUeC5UInt = pmPdcpPktRecUlQos 
Int_PacketsReceivedOooByUeC5UInt = pmPdcpPktRecUlOoo5qi
Int_PacketsReceivedS1ULink = pmPdcpPktFwdRecDlQos
Int_PacketsRetransmittedInDlC5UInt = pmPdcpPktTransDlRetrans5qi
Int_PacketsTransmittedInDlC5UInt = pmPdcpPktTransDlQos
Int_PacketstransmittedS1ULink = pmPdcpPktRecUlQos 
#Int_PacketLossRateUl = pmPdcpPktLossUlQos / ( pmPdcpPktRecUlQos – pmPdcpPktLossUlToDiscQos + pmPdcpPktLossUlToQos )
Int_ReceivedVolumeUlC5UInt = pmPdcpVolRecUlQos
Int_RetransmittedVolumeC5UInt = pmPdcpVolTransDlRetrans5qi
Int_TransmittedVolumeDlC5UInt = pmPdcpVolTransDlQos
Int_VolumeTransmittedS1ULink = pmPdcpVolRecUlQos
Int_AvgRadioRecInterferencePwr_fW = WeightedAverage(pmRadioRecInterferencePwrDistr, [0.79432,0.89716,1.12946,1.42191,1.79008,2.25357,2.83708,3.57167,4.49647,5.66072,11.07925,27.82982,69.90536,175.59432,441.07,630.95])
Int_AvgRadioRecInterferencePwr = 10*log10(Int_AvgRadioRecInterferencePwr_fW / 1000000000000)
Int_DLHarqBler = (pmMacHarqDlNackQpsk)/(pmMacHarqDlAckQpsk + pmMacHarqDlNackQpsk)
Int_DLHarqBler16 = (pmMacHarqDlNack16Qam)/(pmMacHarqDlAck16Qam +  pmMacHarqDlNack16Qam)
Int_DLHarqBler64 = (pmMacHarqDlNack64Qam)/(pmMacHarqDlAck64Qam + pmMacHarqDlNack64Qam)
Int_DLHarqBler256 = (pmMacHarqDlNack256Qam)/(pmMacHarqDlAck256Qam +  pmMacHarqDlNack256qam)
Int_DLHarqDtxRate = (pmMacHarqDlDtxQpsk)/(pmMacHarqDlAckQpsk +  pmMacHarqDlNackQpsk +  pmMacHarqDlDtxQpsk)
Int_DLHarqDtxRate16 = (pmMacHarqDlDtx16Qam)/(pmMacHarqDlAck16Qam +  pmMacHarqDlNack16Qam + pmMacHarqDlDtx16Qam)
Int_DLHarqDtxRate64 = (pmMacHarqDlDtx64Qam)/(pmMacHarqDlAck64Qam +  pmMacHarqDlNack64Qam + pmMacHarqDlDtx64Qam)
Int_InitialDlHarqTransNackWith64Qam = pmMacHarqDlNack64QamInit
Int_DLHarqDtxRate= (pmMacHarqDlDtx256Qam)/(pmMacHarqDlAck256qam +  pmMacHarqDlNack256Qam + pmMacHarqDlDtx256Qam)
Int_DLInitHarqBler = (pmMacHarqDlInitNackQpskInit)/(pmMacHarqInitAckQpsk +  pmMacHarqDlInitNackQpskInit) 
Int_DLInitHarqBler16 = (pmMacHarqDlInitNack16QamInit)/(pmMacHarqInitAck16Qam +  pmMacHarqDlInitNack16QamInit) 
Int_DLInitHarqBler64 = (pmMacHarqDlInitNack64QamInit)/(pmMacHarqInitAck64Qam +  pmMacHarqDlInitNack64QamInit)
Int_DLInitHarqBler256 = (pmMacHarqDlInitNack256QamInit)/(pmMacHarqInitAck256Qam +  pmMacHarqDlInitNack256QamInit)

#ESS
Int_Average_DL_MAC_Cell_THP_LTE = pmRadioThpVolDl / pmSchedActivityCellDl
Int_Average_DL_MAC_Cell_THP_NR = 64 * pmMacVolDl / pmPdschSchedActivity
Int_LTE_PRB_Util_Av = (pmPrbUsedDlBcch + pmPrbUsedDlDtch + pmPrbUsedDlPcch + pmPrbUsedDlSrb) / pmPrbAvailDl 
Int_LTE_UL_PRB_util_Av = pmPrbUsedUlDtch / pmPrbAvailUl 

#Throughput in Mbps. Note: some of these formulas may give incorrect result , problem under investigation
DL_Cell_Thp_Traffic_normalized = 64 * pmMacVolDl / (pmPdschSchedActivity * 1000)
DL_Cell_Thp_Resources_Normalized_TDD = 64 * pmMacVolDl / (pmPdschAvailTime * 1000)
DL_Cell_Thp_Fixed_Time_Normalization1 = 8 * pmMacVolDl / (900 * 1000000)
DL_Cell_Thp_Fixed_Time_Normalization2 = 64 * pmMacVolDlDrb / (1000 * pmMacTimeDlDrb)
UL_Cell_Thp_Traffic_Normalized = 64 * pmMacVolUl / (pmPuschSchedActivity * 1000)
UL_Cell_Thp_Resources_Normalized_TDD = 64 * pmMacVolUl / (pmPuschAvailTime * 1000)
UL_Cell_Thp_Fixed_Time_Normalization = 8 * pmMacVolUl / (900 * 1000000)
UL_UE_Thp_User_Thp = 64 * pmMacVolUlResUe / (pmMacTimeUlResUe * 1000)
