#The formulas below are taken from the CPI DOCUMENT: RADIO NETWORK KPI  120/1553-HSD 101 02 rev AM
#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:
#      - sum_<countername>: Returns the sum of counter 'name' across the time and object domains. 
#      - sum_time_<countername>: Returns the sum of counter 'name' across the object domain for the current time. 
#      - sum_mo_<countername>:   Returns the sum of counter or field 'name' across the time domain for the current MO. 
#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"

########################
#MISCELLANEOUS
########################

MpLoad           = pmSumMeasuredLoad / pmSamplesMeasuredLoad
CcLoad           = pmSumCcSpMeasLoad / pmSamplesCcSpMeasLoad
DcLoad           = pmSumDcSpMeasLoad / pmSamplesDcSpMeasLoad
PdrLoad          = pmSumPdrSpMeasLoad / pmSamplesPdrSpMeasLoad
Availability     = 100 * (3600 - ( pmCellDowntimeAuto + pmCellDowntimeMan ) ) / 3600
UlRssi           = -112 + ((pmSumUlRssi / pmSamplesUlRssi) / 10) 
#BLER  Deprecated
BLER             = 100 * (pmFaultyTransportBlocksAcUl / pmTransportBlocksAcUl)

#RAB failure causes 
ARABEstTot = pmNoRabEstablishAttemptAmrNb + pmNoRabEstablishAttemptCs57 + pmNoRabEstablishAttemptCs64 + pmNoRabEstablishAttemptPacketInteractive + pmNoRabEstablishAttemptPacketInteractiveEul + pmNoRabEstablishAttemptPacketInteractiveHs + pmNoRabEstablishAttemptPacketStream + pmNoRabEstablishAttemptPacketStream128 + pmNoRabEstablishAttemptSpeech
DlConnLimit = pmNoFailedRabEstAttemptExceedConnLimit + 0
DlAse = pmNoFailedRabEstAttemptLackDlAse + 0
DlChnlCode = pmNoFailedRabEstAttemptLackDlChnlCode + 0
DlHw = pmNoFailedRabEstAttemptLackDlHw + 0
DlHwBest = pmNoFailedRabEstAttemptLackDlHwBest + 0
DlPwr = pmNoFailedRabEstAttemptLackDlPwr + 0 
UlAse = pmNoFailedRabEstAttemptLackUlAse + 0
UlHw = pmNoFailedRabEstAttemptLackUlHw + 0
UlHwBest = pmNoFailedRabEstAttemptLackUlHwBest + 0

########################
#ACCESSIBILITY
########################

CS64NoRabEstAtt  = pmNoRabEstablishAttemptCs64 + 0
EUL_NumRabEstAtt = pmNoRabEstablishAttemptPacketInteractiveEul + 0
SpchNoRabEstAtt  = pmNoRabEstablishAttemptSpeech + 0
SpchNoRabRel     = pmNoSystemRabReleaseSpeech + pmNoNormalRabReleaseSpeech
SpchNoRabEstSucc = pmNoRabEstablishSuccessSpeech + 0
PSNoRabEstAtt    = pmNoRabEstablishAttemptPacketInteractive + 0
PSNoRabEstSucc   = pmNoRabEstablishSuccessPacketInteractive + 0

NoRrcConnReq     = pmTotNoRrcConnectReq + 0
NoRrcConnSuc     = pmTotNoRrcConnectReqSuccess + 0

SpchRrcReq       = pmTotNoRrcConnectReqCs + 0
SpchRrcLS        = pmNoLoadSharingRrcConnCs + 0
SpchRrcSuc       = pmTotNoRrcConnectReqCsSucc + 0
SpchRrcFail      = SpchRrcReq - SpchRrcLS - SpchRrcSuc

PSRrcReq         = pmTotNoRrcConnectReqPs + 0
PSRrcSuc         = pmTotNoRrcConnectReqPsSucc + 0
PSRrcLS          = pmNoLoadSharingRrcConnPs + 0
PSRrcFail        = PSRrcReq - PSRrcLS - PSRrcSuc

StdAloneSrbAtCallEst_CS = 100 * pmNoNormalNasSignReleaseCs / (pmNoNormalNasSignReleaseCs + pmNoSystemNasSignReleaseCs)
StdAloneSrbAtCallEst_PS = 100 * pmNoNormalNasSignReleasePs / (pmNoNormalNasSignReleasePs + pmNoSystemNasSignReleasePs)
CSIuSigSuc              = 100 * pmNoIuSigEstablishSuccessCs / pmNoIuSigEstablishAttemptCs
PSIuSigSuc              = 100 * pmNoIuSigEstablishSuccessPs / pmNoIuSigEstablishAttemptPs

RrcSuc         = 100 * pmTotNoRrcConnectReqSuccess / (pmTotNoRrcConnectReq   - pmNoLoadSharingRrcConn + pmNoRejRrcConnSpFlowCtrl)
PSRrcSucRate   = 100 * pmTotNoRrcConnectReqPsSucc  / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)
SpchRrcSucRate = 100 * pmTotNoRrcConnectReqCsSucc  / (pmTotNoRrcConnectReqCs - pmNoLoadSharingRrcConnCs)

SpchRabSuc = 100 * pmNoRabEstablishSuccessSpeech / pmNoRabEstablishAttemptSpeech
CS64RabSuc = 100 * pmNoRabEstablishSuccessCs64 / pmNoRabEstablishAttemptCs64
CS57RabSuc = 100 * pmNoRabEstablishSuccessCs57 / pmNoRabEstablishAttemptCs57
PSRabSucc  = 100 * pmNoRabEstablishSuccessPacketInteractive / pmNoRabEstablishAttemptPacketInteractive
EULRabSuc  = 100 * pmNoRabEstablishSuccessPacketInteractiveEul / pmNoRabEstablishAttemptPacketInteractiveEul
HSRabSuc   = 100 * pmNoRabEstablishSuccessPacketInteractiveHs / pmNoRabEstablishAttemptPacketInteractiveHs
#PsDCHFACHRabSucc = 100 * ((pmNoRabEstablishSuccessPacketInteractive - pmNoRabEstablishSuccessPacketInteractiveHs)/(pmNoRabEstablishAttemptPacketInteractive-pmNoRabEstablishAttemptPacketInteractiveHs))
#changed formula for PS R99 Rab Establish Success, PLM Info 449
#PsDCHFACHRabSucc = 100 * ((pmNoRabEstablishSuccessPacketInteractive  - pmNoRabEstablishSuccessPacketInteractiveHs) / (pmNoRabEstablishAttemptPacketInteractive - pmNoRabEstablishAttemptPacketInteractiveHs + pmNoOfNonHoReqDeniedHs + pmNoRabEstBlockTnPsIntHsBest)) 
#New Formula since P6
PsDCHFACHRabSucc = 100 * (pmNoRabEstSuccessPsIntNonHs / pmNoRabEstAttemptPsIntNonHs)

SpchAccess = SpchRrcSucRate * SpchRabSuc * StdAloneSrbAtCallEst_CS / 10000 
CS64Access = SpchRrcSucRate * CS64RabSuc * StdAloneSrbAtCallEst_CS / 10000 
CS57Access = SpchRrcSucRate * CS57RabSuc * StdAloneSrbAtCallEst_CS / 10000 
PSAccess   = PSRrcSucRate   * PSRabSucc  * StdAloneSrbAtCallEst_PS / 10000 
HsAccess   = PSRrcSucRate   * HSRabSuc   * StdAloneSrbAtCallEst_PS / 10000  
EULAccess  = PSRrcSucRate   * EULRabSuc  * StdAloneSrbAtCallEst_PS / 10000  

RrcFailContrib  = 100 * (pmTotNoRrcConnectReq - pmTotNoRrcConnectReqSuccess - pmNoLoadSharingRrcConn ) / ( sum_time_pmTotNoRrcConnectReq - sum_time_pmTotNoRrcConnectReqSuccess - sum_time_pmNoLoadSharingRrcConn)
RrcFail         = 100 - RrcSuc
SpchAccFailRate = 100 * (1 - (SpchRrcSucRate * SpchRabSuc) / 10000)
PSAccFailRate   = 100 * (1 - (PSRrcSucRate * PSRabSucc) / 10000)

########################
#ACCESSIBILITY
#From Radio Network KPI W18.Q1 120/1553-HSD 101 02 Uen Rev AM
########################
Speech_A = 100 * (((pmNoRabEstablishAttemptSpeech - pmNoRabEstAttemptMultiSpeech) / pmNoRabEstablishAttemptSpeech) * (pmTotNoRrcConnectReqCsSucc / (pmTotNoRrcConnectReqCs - pmNoLoadSharingRrcConnCs) * (pmNoRabEstablishSuccessSpeech -  pmNoRabEstSuccessMultiSpeech) / (pmNoRabEstablishAttemptSpeech - pmNoRabEstAttemptMultiSpeech)) + ((pmNoRabEstAttemptMultiSpeechUra / pmNoRabEstablishAttemptSpeech) * (pmNoCellUpdateSuccMultiCs / pmNoCellUpdateAttMultiCs) * (pmNoRabEstSuccessMultiSpeechUra / pmNoRabEstAttemptMultiSpeechUra)) + ((pmNoRabEstAttemptMultiSpeech-pmNoRabEstAttemptMultiSpeechUra) / pmNoRabEstablishAttemptSpeech) * ((pmNoRabEstSuccessMultiSpeech - pmNoRabEstSuccessMultiSpeechUra) / (pmNoRabEstAttemptMultiSpeech - pmNoRabEstAttemptMultiSpeechUra)))
Packetint_A = 100 * ((pmNoRabEstAttPsIntFach + pmNoRabEstAttPsIntCellDch - pmNoRabEstAttSinglePsMultiRab - pmNoRabEstAttMultiPsMultiRab) / (pmNoRabEstAttPsIntFach + pmNoRabEstAttPsIntCellDch + pmChSwitchAttemptUraFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm) * pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs) * (pmNoRabEstSuccPsIntFach + pmNoRabEstSuccPsIntCellDch - pmNoRabEstSuccSinglePsMultiRab - pmNoRabEstSuccMultiPsMultiRab) / (pmNoRabEstAttPsIntFach + pmNoRabEstAttPsIntCellDch - pmNoRabEstAttSinglePsMultiRab - pmNoRabEstAttMultiPsMultiRab) + pmNoRabEstAttSinglePsMultiRab / (pmNoRabEstAttPsIntFach + pmNoRabEstAttPsIntCellDch + pmChSwitchAttemptUraFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm) * pmNoRabEstSuccSinglePsMultiRab / pmNoRabEstAttSinglePsMultiRab + (pmNoRabEstAttMultiPsMultiRab + pmChSwitchAttemptUraFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm) / (pmNoRabEstAttPsIntFach + pmNoRabEstAttPsIntCellDch + pmChSwitchAttemptUraFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm) * (pmNoRabEstSuccMultiPsMultiRab + pmChSwitchSuccUraFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessSuccSp0CellDch) / (pmNoRabEstAttMultiPsMultiRab+ pmChSwitchAttemptUraFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm))

CS_A_SigSetup = 100 * (pmNoIuSigEstablishSuccessCs / pmNoIuSigEstablishAttemptCs)
PS_A_SigSetup = 100 * (pmNoIuSigEstablishSuccessPs / pmNoIuSigEstablishAttemptPs)
Sp_A = 100 * ((pmTotNoRrcConnectReqCsSucc + pmNoCellUpdateSuccMultiCs)/ (pmTotNoRrcConnectReqCs + pmNoCellUpdateAttMultiCs - pmNoLoadSharingRrcConnCs)) * (pmNoNormalNasSignReleaseCs / (pmNoNormalNasSignReleaseCs + pmNoSystemNasSignReleaseCs)) * (pmNoRabEstablishSuccessSpeech / pmNoRabEstablishAttemptSpeech)
Sp_A_W = 100 * (((pmNoRabEstablishAttemptSpeech - pmNoRabEstAttemptMultiSpeech) / pmNoRabEstablishAttemptSpeech) * (pmTotNoRrcConnectReqCsSucc / (pmTotNoRrcConnectReqCs - pmNoLoadSharingRrcConnCs) * ((pmNoNormalNasSignReleaseCs - pmNoNormalNasSignReleaseMultiCs) / (pmNoNormalNasSignReleaseCs - pmNoNormalNasSignReleaseMultiCs + pmNoSystemNasSignReleaseCs - pmNoSystemNasSignReleaseMultiCs)) * (pmNoRabEstablishSuccessSpeech -  pmNoRabEstSuccessMultiSpeech) / (pmNoRabEstablishAttemptSpeech - pmNoRabEstAttemptMultiSpeech)) + ((pmNoRabEstAttemptMultiSpeechUra / pmNoRabEstablishAttemptSpeech) * (pmNoCellUpdateSuccMultiCs/pmNoCellUpdateAttMultiCs) * (pmNoNormalNasSignRelMultiCsUra / (pmNoNormalNasSignRelMultiCsUra + pmNoSystemNasSignRelMultiCsUra)) * (pmNoRabEstSuccessMultiSpeechUra / pmNoRabEstAttemptMultiSpeechUra)) + ((pmNoRabEstAttemptMultiSpeech-pmNoRabEstAttemptMultiSpeechUra) / pmNoRabEstablishAttemptSpeech) * ((pmNoNormalNasSignReleaseMultiCs - pmNoNormalNasSignRelMultiCsUra) / (pmNoSystemNasSignReleaseMultiCs - pmNoSystemNasSignRelMultiCsUra + pmNoNormalNasSignReleaseMultiCs - pmNoNormalNasSignRelMultiCsUra)) * ((pmNoRabEstSuccessMultiSpeech - pmNoRabEstSuccessMultiSpeechUra) / (pmNoRabEstAttemptMultiSpeech - pmNoRabEstAttemptMultiSpeechUra)))
Sp_A_IncIRAT = 100 * ((pmTotNoRrcConnectReqCsSucc + pmNoCellUpdateSuccMultiCs)/ (pmTotNoRrcConnectReqCs + pmNoCellUpdateAttMultiCs - pmNoLoadSharingRrcConnCs)) * (pmNoNormalNasSignReleaseCs / (pmNoNormalNasSignReleaseCs + pmNoSystemNasSignReleaseCs)) * ((pmNoRabEstablishSuccessSpeech + pmNoInCsIratHoSuccess) / (pmNoRabEstablishAttemptSpeech + pmNoInCsIratHoAtt))
Sp_A_NoSigSetup = 100 * ((pmTotNoRrcConnectReqCsSucc + pmNoCellUpdateSuccMultiCs)/ (pmTotNoRrcConnectReqCs + pmNoCellUpdateAttMultiCs - pmNoLoadSharingRrcConnCs)) * (pmNoRabEstablishSuccessSpeech / pmNoRabEstablishAttemptSpeech)
Sp_A_Idle = 100 * (pmTotNoRrcConnectReqCsSucc / (pmTotNoRrcConnectReqCs - pmNoLoadSharingRrcConnCs)) * ((pmNoNormalNasSignReleaseCs - pmNoNormalNasSignReleaseMultiCs) / (pmNoNormalNasSignReleaseCs - pmNoNormalNasSignReleaseMultiCs + pmNoSystemNasSignReleaseCs - pmNoSystemNasSignReleaseMultiCs)) * ((pmNoRabEstablishSuccessSpeech - pmNoRabEstSuccessMultiSpeech) / (pmNoRabEstablishAttemptSpeech - pmNoRabEstAttemptMultiSpeech))
Sp_A_Multi_Ura = 100 * (pmNoCellUpdateSuccMultiCs / pmNoCellUpdateAttMultiCs) * (pmNoNormalNasSignRelMultiCsUra / (pmNoNormalNasSignRelMultiCsUra + pmNoSystemNasSignRelMultiCsUra)) * (pmNoRabEstSuccessMultiSpeechUra / pmNoRabEstAttemptMultiSpeechUra)
Sp_A_Multi_Fach = 100 * (pmNoNormalNasSignRelMultiCsFach / (pmNoNormalNasSignRelMultiCsFach + pmNoSystemNasSignRelMultiCsFach)) * (pmNoRabEstSuccessMultiSpeechFach / pmNoRabEstAttemptMultiSpeechFach)
Sp_A_Multi_Dch = 100 * ((pmNoNormalNasSignReleaseMultiCs - pmNoNormalNasSignRelMultiCsUra - pmNoNormalNasSignRelMultiCsFach) / (pmNoNormalNasSignReleaseMultiCs - pmNoNormalNasSignRelMultiCsUra - pmNoNormalNasSignRelMultiCsFach + pmNoSystemNasSignReleaseMultiCs - pmNoSystemNasSignRelMultiCsUra - pmNoSystemNasSignRelMultiCsFach)) * ((pmNoRabEstSuccessMultiSpeech - pmNoRabEstSuccessMultiSpeechUra - pmNoRabEstSuccessMultiSpeechFach)  / (pmNoRabEstAttemptMultiSpeech - pmNoRabEstAttemptMultiSpeechUra - pmNoRabEstAttemptMultiSpeechFach))
CSAmrWb_A_Multi_U = 100 * (pmNoCellUpdateSuccMultiCs / pmNoCellUpdateAttMultiCs) * (pmNoNormalNasSignReleaseMultiCs / (pmNoNormalNasSignReleaseMultiCs + pmNoSystemNasSignReleaseMultiCs)) * (pmNoRabEstSuccessMultiAmrWb / pmNoRabEstAttemptMultiAmrWb)
CSAmrNb_A_Multi_U = 100 * (pmNoCellUpdateSuccMultiCs / pmNoCellUpdateAttMultiCs) * (pmNoNormalNasSignReleaseMultiCs / (pmNoNormalNasSignReleaseMultiCs + pmNoSystemNasSignReleaseMultiCs)) * (pmNoRabEstSuccessMultiAmrNb / pmNoRabEstAttemptMultiAmrNb)
CSAmrNb_A_Multi_D = 100 * (pmNoNormalNasSignReleaseMultiCs / (pmNoNormalNasSignReleaseMultiCs + pmNoSystemNasSignReleaseMultiCs)) * (pmNoRabEstSuccessMultiAmrNb / pmNoRabEstAttemptMultiAmrNb)
Sp_A_Csfb = 100 * (pmTotNoRrcConnReqCsfbIndSucc / (pmTotNoRrcConnReqCsfbInd - pmNoLoadSharingRrcConnCsfbInd)) * (pmNoNormalNasSignRelCsfbInd / (pmNoNormalNasSignRelCsfbInd + pmNoSystemNasSignRelCsfbInd)) * ((pmNoRabEstSuccCsfbInd + pmNoRabEstSuccCsfbDetect) / (pmNoRabEstAttCsfbInd + pmNoRabEstAttCsfbDetect))
CS64_A = 100 * (pmTotNoRrcConnectReqCsSucc / (pmTotNoRrcConnectReqCs - pmNoLoadSharingRrcConnCs)) * (pmNoNormalNasSignReleaseCs / (pmNoNormalNasSignReleaseCs + pmNoSystemNasSignReleaseCs)) * (pmNoRabEstablishSuccessCs64 / pmNoRabEstablishAttemptCs64)
CS57_A = 100 * (pmTotNoRrcConnectReqCsSucc / (pmTotNoRrcConnectReqCs - pmNoLoadSharingRrcConnCs)) * (pmNoNormalNasSignReleaseCs / (pmNoNormalNasSignReleaseCs + pmNoSystemNasSignReleaseCs)) * (pmNoRabEstablishSuccessCs57 / pmNoRabEstablishAttemptCs57)
Pint_A = 100 * (pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)) * (pmNoNormalNasSignReleasePs / (pmNoNormalNasSignReleasePs + pmNoSystemNasSignReleasePs)) * (pmNoRabEstablishSuccessPacketInteractive / pmNoRabEstablishAttemptPacketInteractive)
Pint_A_Session = 100 * ((((pmNoRabEstAttPsIntCellDch - pmNoRabEstAttSinglePsMultiRab - pmNoRabEstAttMultiPsMultiRab) / (pmNoRabEstAttPsIntCellDch + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm)) * ((pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)) * ((pmNoNormalNasSignReleasePs - pmNoNormalNasSignReleaseMultiPs) / ( pmNoNormalNasSignReleasePs - pmNoNormalNasSignReleaseMultiPs + pmNoSystemNasSignReleasePs - pmNoSystemNasSignReleaseMultiPs)) * ((pmNoRabEstSuccPsIntCellDch - pmNoRabEstSuccSinglePsMultiRab - pmNoRabEstSuccMultiPsMultiRab) / ( pmNoRabEstAttPsIntCellDch - pmNoRabEstAttSinglePsMultiRab - pmNoRabEstAttMultiPsMultiRab)))) + ((pmNoRabEstAttSinglePsMultiRab / ( pmNoRabEstAttPsIntCellDch + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit +  pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm)) * ((pmNoNormalNasSignReleaseMultiPs / (pmNoNormalNasSignReleaseMultiPs + pmNoSystemNasSignReleaseMultiPs)) * (pmNoRabEstSuccSinglePsMultiRab / pmNoRabEstAttSinglePsMultiRab))) + (((pmNoRabEstAttMultiPsMultiRab + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm) / ( pmNoRabEstAttPsIntCellDch + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit +  pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm)) * ((pmNoRabEstSuccMultiPsMultiRab + @{pmUpSwitchSessAccessSuccFach}[0] + @{pmUpSwitchSessAccessSuccFach}[1] + @{pmUpSwitchSessAccessSuccFach}[2] + @{pmUpSwitchSessAccessSuccFach}[3] + @{pmUpSwitchSessAccessSuccFach}[4] + @{pmUpSwitchSessAccessSuccFach}[5] + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessSuccSp0CellDch) / (pmNoRabEstAttMultiPsMultiRab + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm))))
Pint_A_Session_NoSigSetup = 100 * ((((pmNoRabEstAttPsIntCellDch - pmNoRabEstAttSinglePsMultiRab - pmNoRabEstAttMultiPsMultiRab) / (pmNoRabEstAttPsIntCellDch + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm)) * ((pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)) * ((pmNoRabEstSuccPsIntCellDch - pmNoRabEstSuccSinglePsMultiRab - pmNoRabEstSuccMultiPsMultiRab) / ( pmNoRabEstAttPsIntCellDch - pmNoRabEstAttSinglePsMultiRab - pmNoRabEstAttMultiPsMultiRab)))) + ((pmNoRabEstAttSinglePsMultiRab / ( pmNoRabEstAttPsIntCellDch + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit +  pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm)) * (pmNoRabEstSuccSinglePsMultiRab / pmNoRabEstAttSinglePsMultiRab))) + (((pmNoRabEstAttMultiPsMultiRab + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm) / ( pmNoRabEstAttPsIntCellDch + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit +  pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm)) * ((pmNoRabEstSuccMultiPsMultiRab + @{pmUpSwitchSessAccessSuccFach}[0] + @{pmUpSwitchSessAccessSuccFach}[1] + @{pmUpSwitchSessAccessSuccFach}[2] + @{pmUpSwitchSessAccessSuccFach}[3] + @{pmUpSwitchSessAccessSuccFach}[4] + @{pmUpSwitchSessAccessSuccFach}[5] + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessSuccSp0CellDch) / (pmNoRabEstAttMultiPsMultiRab + pmUpSwitchSessAccessAttFach + pmChSwitchSuccUraCellDch - pmChSwitchSuccUraCellDchCsInit + pmUpSwitchSessAttSp0CellDch + pmChSwitchFailUraFachAdm))))
Pint_DCH_A = 100 * (pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)) * (pmNoNormalNasSignReleasePs / (pmNoNormalNasSignReleasePs + pmNoSystemNasSignReleasePs)) * (pmNoRabEstSuccessPsIntNonHs / pmNoRabEstAttemptPsIntNonHs)
PsInt_A_Multi_D = 100 * (pmNoNormalNasSignReleaseMultiPs / (pmNoNormalNasSignReleaseMultiPs + pmNoSystemNasSignReleaseMultiPs)) * (pmNoRabEstSuccessMultiPsInt / pmNoRabEstAttemptMultiPsInt)
Pint_HS_A = 100 * (pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)) * (pmNoNormalNasSignReleasePs / (pmNoNormalNasSignReleasePs + pmNoSystemNasSignReleasePs)) * (pmNoRabEstablishSuccessPacketInteractiveHs / pmNoRabEstablishAttemptPacketInteractiveHs)
Pint_HS_A_NoAdm = 100 * (pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs - (pmNoRrcPsReqDeniedAdm + pmNoRrcConnReqBlockTnPs)))* (pmNoNormalNasSignReleasePs / (pmNoNormalNasSignReleasePs + pmNoSystemNasSignReleasePs))*(pmNoRabEstablishSuccessPacketInteractiveHs / (pmNoRabEstablishAttemptPacketInteractiveHs - pmNoOfNonHoReqDeniedHs))
Pint_HS_A_NoSigSetup = 100 * (pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)) * (pmNoRabEstablishSuccessPacketInteractiveHs / pmNoRabEstablishAttemptPacketInteractiveHs)
Pint_HS_A_NoAdm_NoSigSetup = 100 * (pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs - (pmNoRrcPsReqDeniedAdm + pmNoRrcConnReqBlockTnPs)))*(pmNoRabEstablishSuccessPacketInteractiveHs / (pmNoRabEstablishAttemptPacketInteractiveHs - pmNoOfNonHoReqDeniedHs))
Pint_EUL_A = 100 * (pmTotNoRrcConnectReqPsSucc / (pmTotNoRrcConnectReqPs - pmNoLoadSharingRrcConnPs)) * (pmNoNormalNasSignReleasePs / (pmNoNormalNasSignReleasePs + pmNoSystemNasSignReleasePs)) * (pmNoRabEstablishSuccessPacketInteractiveEul / pmNoRabEstablishAttemptPacketInteractiveEul)
CBS_TCP_A = 100 * (pmNoSuccOutTcpConn / pmNoAttOutTcpConn)

########################
#RETAINABILITY
########################

CS64Drop    = 100 * pmNoSystemRabReleaseCs64 / (pmNoNormalRabReleaseCs64 + pmNoSystemRabReleaseCs64)
SpchDrop    = 100 * pmNoSystemRabReleaseSpeech / (pmNoNormalRabReleaseSpeech + pmNoSystemRabReleaseSpeech)
TotalPSRabs = pmNoNormalRabReleasePacket + pmNoSystemRabReleasePacket - pmNoNormalRabReleasePacketUra - pmNoSystemRabReleasePacketUra + pmChSwitchSuccFachUra - pmNoSystemRbReleaseHs - pmNoNormalRbReleaseHs + pmNoSuccRbReconfOrigPsIntDch + pmUpswitchFachHsSuccess
CS57Drop    = 100 * pmNoSystemRabReleaseCsStream / (pmNoNormalRabReleaseCsStream + pmNoSystemRabReleaseCsStream)
#PSDrop      = 100 * (pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra) / (pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra + pmNoNormalRabReleasePacket - pmNoNormalRabReleasePacketUra + pmChSwitchSuccFachUra )
#HsDrop      = 100 * (pmNoSystemRbReleaseHs) / (pmNoSystemRbReleaseHs + pmNoNormalRbReleaseHs + pmNoSuccRbReconfOrigPsIntDch + pmPsIntHsToFachSucc)
PSDrop      = 100 * (pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra - pmChSwitchAttemptFachUra + pmChSwitchSuccFachUra - pmChSwitchAttemptDchUra + pmChSwitchSuccDchUra - pmChSwitchAttemptHsUra + pmChSwitchSuccHsUra) / (pmNoNormalRabReleasePacket - pmNoNormalRabReleasePacketUra + pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra + pmChSwitchSuccFachUra + pmChSwitchSuccDchUra + pmChSwitchSuccHsUra)
HsDrop      = 100 * (pmNoSystemRbReleaseHs - pmChSwitchAttemptHsUra + pmChSwitchSuccHsUra) / (pmNoSystemRbReleaseHs + pmNoNormalRbReleaseHs + pmNoSuccRbReconfPsIntDch + pmPsIntHsToFachSucc + pmChSwitchSuccHsUra)

#SpchRabSucContrib =  100 * (pmNoRabEstablishSuccessSpeech / sum_time_pmNoRabEstablishSuccessSpeech)
SpchDropContrib    =  100 * pmNoSystemRabReleaseSpeech / sum_time_pmNoSystemRabReleaseSpeech
CS64DropContrib    =  100 * pmNoSystemRabReleaseCs64 / sum_time_pmNoSystemRabReleaseCs64
PSDropContrib      =  100 * (pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra) / (sum_time_pmNoSystemRabReleasePacket - sum_time_pmNoSystemRabReleasePacketUra)
HsDropContrib      =  100 * pmNoSystemRbReleaseHs / sum_time_pmNoSystemRbReleaseHs

SHOFailContrib     =  100 * pmNoTimesCellFailAddToActSet / sum_time_pmNoTimesCellFailAddToActSet

SpeechRABFail        = pmNoRabEstablishAttemptSpeech - pmNoRabEstablishSuccessSpeech
SpeechRABFail_RNC    = sum_time_pmNoRabEstablishAttemptSpeech - sum_time_pmNoRabEstablishSuccessSpeech
SpeechRABFailContrib = 100 * ((pmNoRabEstablishAttemptSpeech - pmNoRabEstablishSuccessSpeech)/(sum_time_pmNoRabEstablishAttemptSpeech - sum_time_pmNoRabEstablishSuccessSpeech))

PSRABFail          = pmNoRabEstablishAttemptPacketInteractive - pmNoRabEstablishSuccessPacketInteractive
PSRABFail_RNC      = sum_time_pmNoRabEstablishAttemptPacketInteractive - sum_time_pmNoRabEstablishSuccessPacketInteractive
PSRABFailContrib   = 100 * ((pmNoRabEstablishAttemptPacketInteractive - pmNoRabEstablishSuccessPacketInteractive)/(sum_time_pmNoRabEstablishAttemptPacketInteractive - sum_time_pmNoRabEstablishSuccessPacketInteractive))

PsNoRabRel = pmNoSystemRabReleasePacket + pmNoNormalRabReleasePacket
CS64NoRabRel = pmNoSystemRabReleaseCs64 + pmNoNormalRabReleaseCs64

PsDCHFACHDropRate = 100 * (pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra - pmNoSystemRbReleaseHs) / TotalPSRabs
PSDCHRetransRate = 100 - 100 * (pmSentPacketData1 + pmSentPacketData2 + pmSentPacketData3 + pmSentPacketData4) / (pmSentPacketDataInclRetrans1 + pmSentPacketDataInclRetrans2 + pmSentPacketDataInclRetrans3 + pmSentPacketDataInclRetrans4)
DCHMinperDrop = 15 * (pmSumBestDchPsIntRabEstablish / 180) / (pmNoSystemRabReleasePacket - pmNoSystemRbReleaseHs - pmNoSystemRabReleasePacketUra)
FACHMinperDrop = 15 * (pmSumFachPsIntRabEstablish / 180) / (pmNoSystemRabReleasePacket - pmNoSystemRbReleaseHs - pmNoSystemRabReleasePacketUra)
#CellFACHDrop =  pmNoCellFachDisconnectAbnorm * 100 / (pmNoCellFachDisconnectAbnorm + pmNoCellFachDisconnectNormal)
#CellFACHDrop =  100 * pmNoCellFachDisconnectAbnorm  / (pmNoCellFachDisconnectNormal + pmNoCellFachDisconnectAbnorm + pmChSwitchSuccFachUra)
CellFACHDrop  =  100 * pmNoCellFachDisconnectAbnorm  / (pmNoCellFachDisconnectNormal + pmNoCellFachDisconnectAbnorm + pmChSwitchSuccFachUra + pmUpswitchFachHsSuccess)

HsCellChSuccRate = 100 * (pmNoHsCcSuccess / pmNoHsCcAttempt)
HsCellChAttempt  = pmNoHsCcAttempt + 0

NoHsRel         = pmNoSystemRbReleaseHs + pmNoNormalRbReleaseHs
NoAbnormalHsRel = pmNoSystemRbReleaseHs + 0

HSMinperDrop    = 15 * (pmSumBestPsHsAdchRabEstablish / 180) / pmNoSystemRbReleaseHs 
EULMinperDrop   = 15 * (pmSumBestPsEulRabEstablish / 180) / pmNoSystemRbReleaseEul 

########################
#RETAINABILITY
#From Radio Network KPI W18.Q1 120/1553-HSD 101 02 Uen Rev AM
########################
Speech_R = 100 * ((pmNoSystemRabReleaseSpeech - pmNoSystemRabReleaseSpeechCnInit) / (pmNoNormalRabReleaseSpeech + pmNoSystemRabReleaseSpeech))
PacketintHs_R = 100 *((pmSystemReleaseHsConn + pmSystemRelMultiHsConnToSpeech - pmSystemReleaseHsConnCnInit - pmSystemRelMultiHsConnToSpeechCnInit) / (pmNormalReleaseHsConn + pmNormalRelMultiHsConnToSpeech + pmSystemReleaseHsConn + pmSystemRelMultiHsConnToSpeech + pmReconfSuccOrigHsConn))

Sp_R_D = 100 * (pmNoSystemRabReleaseSpeech / (pmNoNormalRabReleaseSpeech + pmNoSystemRabReleaseSpeech))
Sp_R_D_Iur = 100 * (pmNoSystemRabReleaseSpeech / (pmNoNormalRabReleaseSpeech + pmNoSystemRabReleaseSpeech))
Sp_Multi_R_D = 100 * (pmSystemRelMultiSpeech / (pmSystemRelMultiSpeech + pmNormalRelMultiSpeech + pmSystemRelMultiPsIntToSpeech + pmNormalRelMultiPsIntToSpeech))
CsAmrNb_Multi_R_D = 100 * (pmSystemRelMultiAmrNb / (pmSystemRelMultiAmrNb + pmNormalRelMultiAmrNb + pmSystemRelMultiPsIntToAmrNb + pmNormalRelMultiPsIntToAmrNb))
CsAmrWb_Multi_R_D = 100 * (pmSystemRelMultiAmrWb / (pmSystemRelMultiAmrWb + pmNormalRelMultiAmrWb + pmSystemRelMultiPsIntToAmrWb + pmNormalRelMultiPsIntToAmrWb))
Sp_R_MD = pmRopCounter * 60 * (Speech_U_User / pmNoSystemRabReleaseSpeech)
CS64_R_D = 100 * (pmNoSystemRabReleaseCs64 / (pmNoNormalRabReleaseCs64 + pmNoSystemRabReleaseCs64))
CS64_R_D_Iur = 100 * (pmNoSystemRabReleaseCs64 / (pmNoNormalRabReleaseCs64 + pmNoSystemRabReleaseCs64))
CS64_R_MD = pmRopCounter * 60 * (CS64_U_User / pmNoSystemRabReleaseCs64)
CS57_R_D = 100 * (pmNoSystemRabReleaseCsStream / (pmNoNormalRabReleaseCsStream + pmNoSystemRabReleaseCsStream))
CS57_R_D_Iur = 100 * (pmNoSystemRabReleaseCsStream / (pmNoNormalRabReleaseCsStream + pmNoSystemRabReleaseCsStream))
CS57_R_MD = pmRopCounter * 60 * (CS57_U_User / pmNoSystemRabReleaseCsStream)
Hs_R_D = 100 *((pmSystemReleaseHsConn + pmSystemRelMultiHsConnToSpeech) / (pmNormalReleaseHsConn + pmNormalRelMultiHsConnToSpeech + pmSystemReleaseHsConn + pmSystemRelMultiHsConnToSpeech + pmReconfSuccOrigHsConn))
Hs_R_D_With_Data = 100 *((pmSystemReleaseHsConnWithData + pmSystemRelMultiHsConnWithDataToSpeech) / (pmNormalReleaseHsConn + pmNormalRelMultiHsConnToSpeech + pmSystemReleaseHsConnWithData + pmSystemRelMultiHsConnWithDataToSpeech + pmReconfSuccOrigHsConn))
Pint_R_D = 100 * ((pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra - pmChSwitchAttemptFachUra + pmChSwitchSuccFachUra - pmChSwitchAttemptDchUra + pmChSwitchSuccDchUra - pmChSwitchAttemptHsUra + pmChSwitchSuccHsUra) / (pmNoNormalRabReleasePacket + pmNoSystemRabReleasePacket - pmNoNormalRabReleasePacketUra - pmNoSystemRabReleasePacketUra + pmChSwitchSuccFachUra + pmChSwitchSuccDchUra + pmChSwitchSuccHsUra))
Pint_R_D_Iur = 100 * (pmNoSystemRabReleasePacket / (pmNoNormalRabReleasePacket + pmNoSystemRabReleasePacket))
PsInt_Multi_R_D = 100 * (pmSystemRelMultiPsInt / (pmSystemRelMultiPsInt + pmNormalRelMultiPsInt + pmSystemRelMultiSpeechToPsInt + pmNormalRelMultiSpeechToPsInt))
PintDCH_R_D = 100 * ((pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra - pmNoSystemRbReleaseHs - pmChSwitchAttemptFachUra + pmChSwitchSuccFachUra - pmChSwitchAttemptDchUra + pmChSwitchSuccDchUra) / (pmNoNormalRabReleasePacket - pmNoNormalRabReleasePacketUra + pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra - pmNoNormalRbReleaseHs - pmNoSystemRbReleaseHs + pmNoSuccRbReconfOrigPsIntDch + pmChSwitchSuccFachUra + pmUpswitchFachHsSuccess + pmChSwitchSuccDchUra))
PintHS_R_D = 100 * (pmNoSystemRbReleaseHs - pmChSwitchAttemptHsUra + pmChSwitchSuccHsUra) / (pmNoNormalRbReleaseHs + pmNoSystemRbReleaseHs + pmNoSuccRbReconfPsIntDch + pmPsIntHsToFachSucc + pmChSwitchSuccHsUra)
Pint_R_MD = pmRopCounter * 60 * Pint_U_User / (pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra)
PintDCH_R_MD = pmRopCounter * 60 * (PintDCH_U_User + PintFach_U_User) / (pmNoSystemRabReleasePacket - pmNoSystemRabReleasePacketUra - pmNoSystemRbReleaseHs)
PintHS_R_MD = pmRopCounter * 60 * (PintHS_U_User / pmNoSystemRbReleaseHs)
PintEUL_R_MD = pmRopCounter * 60 * (PintEUL_U_User / pmNoSystemRbReleaseEul)
SRBonly34_R_D = 100 * (pmNoSystemReleaseSrbOnly34 / (pmNoSystemReleaseSrbOnly34 + pmNoNormalReleaseSrbOnly34))
SRBonly136_R_D = 100 * (pmNoSystemReleaseSrbOnly136 / (pmNoSystemReleaseSrbOnly136 + pmNoNormalReleaseSrbOnly136))
SRBonlyHS_R_D = 100 * (pmNoSystemReleaseSrbOnlyHs / (pmNoSystemReleaseSrbOnlyHs + pmNoNormalReleaseSrbOnlyHs))
SRBonlyEUL_R_D = 100 * (pmNoSystemReleaseSrbOnlyEul / (pmNoSystemReleaseSrbOnlyEul + pmNoNormalReleaseSrbOnlyEul))
Drop_Source = 100 * (pmSystemReleaseSource / (pmSystemReleaseSource + pmNormalReleaseSource))
Reconf_Drop_Source = 100 * (pmReconfSysRelSource / pmReconfAttSource)
Reconf_Drop_Target = 100 * (pmReconfSysRelTarget / pmReconfAttTarget)

########################
#CALL COMPLETION
########################


SpchCCSR   =       SpchAccess * (100 - SpchDrop) / 100
CS64CCSR   =       CS64Access * (100 - CS64Drop) / 100
PSCCSR     =       PSAccess   * (100 - PSDrop)   / 100


########################
#THROUGHPUT, TRAFFIC VOLUME
########################

AvgSpeechErlang = (pmSumBestCs12Establish + pmSumBestAmr12200RabEstablish + pmSumBestAmr7950RabEstablish + pmSumBestAmr5900RabEstablish + pmSumBestAmr4750RabEstablish + pmSumBestAmrNbMmRabEstablish + pmSumBestAmrWbRabEstablish) / (180 * pmRopCounter)


PSDlDchTputTot  = pmSumDchDlRlcTotPacketThp / pmSamplesDchDlRlcTotPacketThp
PSUlDchTputTot  = pmSumDchUlRlcTotPacketThp / pmSamplesDchUlRlcTotPacketThp
PSDlDchTputUser = pmSumDchDlRlcUserPacketThp / pmSamplesDchDlRlcUserPacketThp
PSUlDchTputUser = pmSumDchUlRlcUserPacketThp / pmSamplesDchUlRlcUserPacketThp

PSHsTputTot   = pmSumHsDlRlcTotPacketThp / pmSamplesHsDlRlcTotPacketThp 
PSEulTputTot  = pmSumEulRlcTotPacketThp / pmSamplesEulRlcTotPacketThp 
PSHsTputUser  = pmSumHsDlRlcUserPacketThp / pmSamplesHsDlRlcUserPacketThp 
PSEulTputUser = pmSumEulRlcUserPacketThp / pmSamplesEulRlcUserPacketThp

HsTputAvg = 8 * (pmSentPacketDataHs3 + pmSentPacketDataHs4) / (pmTotalPacketDurationHs3 + pmTotalPacketDurationHs4)
HsTputGt100KbAvg = 8 * (pmSentPacketDataHs4) / (pmTotalPacketDurationHs4)
HsRetransmissionRate = 100 - 100 * ( pmSentPacketDataHs1 + pmSentPacketDataHs2 + pmSentPacketDataHs3 + pmSentPacketDataHs4 ) / ( pmSentPacketDataInclRetransHs1  + pmSentPacketDataInclRetransHs2 + pmSentPacketDataInclRetransHs3 + pmSentPacketDataInclRetransHs4 )

PsAvgNoUsers  = (pmSumBestDchPsIntRabEstablish / pmSamplesBestDchPsIntRabEstablish) + (pmSumBestPsHsAdchRabEstablish / pmSamplesBestPsHsAdchRabEstablish) + (pmSumFachPsIntRabEstablish / pmSamplesFachPsIntRabEstablish)
HsAvgNoUsers = pmSumBestPsHsAdchRabEstablish / pmSamplesBestPsHsAdchRabEstablish
HsTotNoUsers = pmSumBestPsHsAdchRabEstablish / ( 180 * pmRopCounter ) 

UsedCapacity   = pmSumCapacity / pmSamplesCapacity
IuPS_DLUL_kbps = (pmNoRoutedIpBytesDl + pmNoRoutedIpBytesUl) * 8 / (pmRopCounter * 900)
IuPS_DL_kbps   = pmNoRoutedIpBytesDl * 8 / (pmRopCounter * 900)
IuPS_UL_kbps   = pmNoRoutedIpBytesUl * 8 / (pmRopCounter * 900) 


AvgUlCredits   = WeightedAverage(pmUlCredits,[12.5,37.5,55,65,72.5,77.5,82.5,87.5,92.5,95])
AvgDlCredits   = WeightedAverage(pmDlCredits,[12.5,37.5,55,65,72.5,77.5,82.5,87.5,92.5,95])

########################
#System Utilization
#From Radio Network KPI W18.Q1 120/1553-HSD 101 02 Uen Rev AM
########################
Speech_U_User = (pmSumBestCs12Establish / pmSamplesBestCs12Establish) + (pmSumBestAmr12200RabEstablish / pmSamplesBestAmr12200RabEstablish) + (pmSumBestAmr7950RabEstablish / pmSamplesBestAmr7950RabEstablish) + (pmSumBestAmr5900RabEstablish / pmSamplesBestAmr5900RabEstablish) + (pmSumBestAmr4750RabEstablish / pmSamplesBestAmr4750RabEstablish) + (pmSumBestAmrWbRabEstablish / pmSamplesBestAmrWbRabEstablish) + (pmSumBestAmrNbMmRabEstablish / pmSamplesBestAmrNbMmRabEstablish)
Packetint_U_Trafficvolume = pmSumDchDlRlcTotPacketThp/2 + pmSumHsDlRlcUserPacketThp/10 + UtanCell.pmSumDchUlRlcTotPacketThp/2 + pmSumEulRlcUserPacketThp/10
PacketintHs_U_Trafficvolume = pmSumHsDlRlcUserPacketThp/10
PacketintEul_U_Trafficvolume = pmSumEulRlcUserPacketThp/10

########################
#IRAT, MOBILITY
########################

SpchIRATU2GHOSucc = 100 * (pmNoSuccessOutIratHoSpeech + pmNoSuccessOutSbHoSpeech + pmSuccLbhoSpeech) / (pmNoAttOutIratHoSpeech + pmNoAttOutSbHoSpeech + pmAttLbhoSpeech)
CsIRATG2UHOSucc   = 100 * pmNoInCsIratHoSuccess / pmNoInCsIratHoAtt
PsIRATU2GCCSucc   = 100 * pmNoOutIratCcSuccess / pmNoOutIratCcAtt

SHOSuccess = 100 * pmNoTimesRlAddToActSet / (pmNoTimesRlAddToActSet + pmNoTimesCellFailAddToActSet)

########################
#Mobility
#From Radio Network KPI W18.Q1 120/1553-HSD 101 02 Uen Rev AM
########################
Speech_M_IRATHO = 100 * ((pmNoSuccessOutIratHoSpeech + pmNoSuccessOutSbHoSpeech + pmSuccLbhoSpeech + pmNoFailOutIratHoSpeechReturnOldChPhyChFail + pmNoFailOutIratHoSpeechReturnOldChNotPhyChFail + pmNoFailOutIratHoSpeechUeRejection + pmNoFailOutSbHoSpeechReturnOldChPhyChFail + pmNoFailOutSbHoSpeechReturnOldChNotPhyChFail + pmNoFailOutSbHoSpeechUeRejection + pmFailLbhoSpeechPhyChFailReturn + pmFailLbhoSpeechNotPhyChFail + pmFailLbhoSpeechUeReject) / (pmNoAttOutIratHoSpeech + pmNoAttOutSbHoSpeech + pmAttLbhoSpeech))
Speech_M_IRATHO_GSM_AR = 100 * (pmNoSuccessOutIratHoSpeech / (pmNoNormalRabReleaseSpeech + pmNoSystemRabReleaseSpeech))
Speech_M_CSFB_AR = 100 * ((pmNoRabEstSuccCsfbInd + pmNoRabEstSuccCsfbDetect + pmNoRabEstSuccPsHoCsfb) / pmNoRabEstablishSuccessSpeech)

AvgNoRlsPerUser  = (pmSumUesWith1Rls1RlInActSet / pmSamplesUesWith1Rls1RlInActSet + pmSumUesWith1Rls2RlInActSet / pmSamplesUesWith1Rls2RlInActSet + pmSumUesWith1Rls3RlInActSet / pmSamplesUesWith1Rls3RlInActSet + 2 * (pmSumUesWith2Rls2RlInActSet / pmSamplesUesWith2Rls2RlInActSet + pmSumUesWith2Rls3RlInActSet / pmSamplesUesWith2Rls3RlInActSet + pmSumUesWith2Rls4RlInActSet / pmSamplesUesWith2Rls4RlInActSet) + 3 * (pmSumUesWith3Rls3RlInActSet / pmSamplesUesWith3Rls3RlInActSet + pmSumUesWith3Rls4RlInActSet / pmSamplesUesWith3Rls4RlInActSet) + 4 * pmSumUesWith4Rls4RlInActSet / pmSamplesUesWith4Rls4RlInActSet) / (pmSumUesWith1Rls1RlInActSet / pmSamplesUesWith1Rls1RlInActSet + pmSumUesWith1Rls2RlInActSet / pmSamplesUesWith1Rls2RlInActSet + pmSumUesWith1Rls3RlInActSet / pmSamplesUesWith1Rls3RlInActSet + pmSumUesWith2Rls2RlInActSet / pmSamplesUesWith2Rls2RlInActSet + pmSumUesWith2Rls3RlInActSet / pmSamplesUesWith2Rls3RlInActSet + pmSumUesWith2Rls4RlInActSet / pmSamplesUesWith2Rls4RlInActSet + pmSumUesWith3Rls3RlInActSet / pmSamplesUesWith3Rls3RlInActSet + pmSumUesWith3Rls4RlInActSet / pmSamplesUesWith3Rls4RlInActSet + pmSumUesWith4Rls4RlInActSet / pmSamplesUesWith4Rls4RlInActSet)
AvgNoRlPerUser  = 4 * ((pmSumUesWith2Rls4RlInActSet / pmSamplesUesWith2Rls4RlInActSet) + (pmSumUesWith3Rls4RlInActSet / pmSamplesUesWith3Rls4RlInActSet) + (pmSumUesWith4Rls4RlInActSet / pmSamplesUesWith4Rls4RlInActSet)) + (pmSumUesWith1Rls1RlInActSet / pmSamplesUesWith1Rls1RlInActSet) + 2 * ((pmSumUesWith1Rls2RlInActSet / pmSamplesUesWith1Rls2RlInActSet) + (pmSumUesWith2Rls2RlInActSet / pmSamplesUesWith2Rls2RlInActSet)) + 3 * ((pmSumUesWith1Rls3RlInActSet / pmSamplesUesWith1Rls3RlInActSet) + (pmSumUesWith2Rls3RlInActSet / pmSamplesUesWith2Rls3RlInActSet) + (pmSumUesWith3Rls3RlInActSet / pmSamplesUesWith3Rls3RlInActSet)) / ((pmSumUesWith1Rls1RlInActSet / pmSamplesUesWith1Rls1RlInActSet) + (pmSumUesWith1Rls2RlInActSet / pmSamplesUesWith1Rls2RlInActSet) + (pmSumUesWith1Rls3RlInActSet / pmSamplesUesWith1Rls3RlInActSet) + (pmSumUesWith2Rls2RlInActSet / pmSamplesUesWith2Rls2RlInActSet) + (pmSumUesWith2Rls3RlInActSet / pmSamplesUesWith2Rls3RlInActSet) + (pmSumUesWith2Rls4RlInActSet / pmSamplesUesWith2Rls4RlInActSet) + (pmSumUesWith3Rls3RlInActSet / pmSamplesUesWith3Rls3RlInActSet) + (pmSumUesWith3Rls4RlInActSet / pmSamplesUesWith3Rls4RlInActSet) + (pmSumUesWith4Rls4RlInActSet / pmSamplesUesWith4Rls4RlInActSet))
Sp_M_SHO = 100 * (pmSuccRlAddSpeech / pmAttRlAddPostAdmSpeech)
Sp_M_SHO_Tot = 100 * (pmSuccRlAddSpeech  / pmAttRlAddPreAdmSpeech)
Sp_M_IFHO_S = 100 * (pmSuccNonBlindInterFreqHoCsSpeech12 / pmAttNonBlindInterFreqHoCsSpeech12)
Sp_M_IFHO = 100 * ( pmSuccOutIfhoSpeech /  pmAttOutPostAdmIfhoSpeech)
Sp_M_IFHO_Tot = 100 * (pmSuccOutIfhoSpeech / pmAttOutPreAdmIfhoSpeech)
CS_M_IFHO_S = 100 * (pmSuccNonBlindInterFreqHoCsConversational / pmAttNonBlindInterFreqHoCsConversational)
PintHS_M_IFHO = 100 * (pmSuccOutIfhoHs / pmAttOutPostAdmIfhoHs)
PintHS_M_IFHO_Tot = 100 * (pmSuccOutIfhoHs / pmAttOutPreAdmIfhoHs)
Pint64OrLess_M_IFHO_S_CR = 100 * (pmSuccNonBlindInterFreqHoPsInteractiveLess64 / pmAttNonBlindInterFreqHoPsInteractiveLess64)
Pint64DCHPlus_M_IFHO_S_CR = 100 * ((pmSuccNonBlindInterFreqHoPsInteractiveGreater64 - pmSuccNonBlindIfhoPsIntHs )  / (pmAttNonBlindInterFreqPsInteractiveGreater64 - pmAttNonBlindIfhoPsIntHs))
Pint64Plus_M_IFHO_S_CR = 100 * (pmSuccNonBlindInterFreqHoPsInteractiveGreater64 / pmAttNonBlindInterFreqHoPsInteractiveGreater64)
Pint64HS_M_IFHO_S_CR = 100 * (pmSuccNonBlindIfhoPsIntHs / pmAttNonBlindIfhoPsIntHs)
Pint64EUL_M_IFHO_S_CR = 100 * (pmSuccNonBlindIfhoPsIntEul / pmAttNonBlindIfhoPsIntEul)
Sp_M_IRATHO_GSM_S_CR = 100 * ((pmNoSuccessOutIratHoSpeech + pmNoSuccessOutSbHoSpeech + pmSuccLbhoSpeech) / (pmNoAttOutIratHoSpeech + pmNoAttOutSbHoSpeech + pmAttLbhoSpeech))
Pint_M_IRATHO_LTE = 100 * (pmOutPsHoEutraSucc / pmOutPsHoEutraAtt)
Pint_M_IRATHO_LTE_Tot = 100 *(pmOutPsHoEutraSucc / pmOutPsHoEutraReq)
CS_M_IRATHO_GSM_S_CR = 100 * (pmNoSuccessOutIratHoCs57 / pmNoAttOutIratHoCs57)
Multi_M_IRATHO_GSM_S_CR = 100 * (pmNoSuccessOutIratHoMulti / pmNoAttOutIratHoMulti)
Pint_M_IRATCC_GSM_S_CR = 100 * (pmNoOutIratCcSuccess / pmNoOutIratCcAtt)
PintDCH_M_IRATCC_GSM_S_CR = 100 * ((pmNoOutIratCcSuccess - pmNoOutIratCcSuccessHs) / (pmNoOutIratCcAtt - pmNoOutIratCcAttHs))
PintHS_M_IRATCC_GSM_S_CR = 100 * (pmNoOutIratCcSuccessHs / pmNoOutIratCcAttHs)
PintEUL_M_IRATCC_GSM_S_CR = 100 * (pmNoOutIratCcSuccessEul / pmNoOutIratCcAttEul)
Int_M_incIRATHO_LTE_S_CR = 100 * (pmNoInIratHoSuccPsint / pmNoInIratHoAttPsint)
IntHS_M_incIRATHO_LTE_S_CR = 100 * (pmNoInIratHoSuccPsintHS / pmNoInIratHoAttPsintHS)
IntEUL_M_incIRATHO_LTE_S_CR = 100 * (pmNoInIratHoSuccPsintEUL / pmNoInIratHoAttPsintEUL)
IntnonHS_M_incIRATHO_LTE_S_CR = 100 * (pmNoInIratHoSuccPsintnonHS / pmNoInIratHoAttPsintnonHS)
Sp_M_incIRATHO_S_CR = 100 * (pmNoInIratHoSuccSpeech / pmNoInIratHoAttSpeech)
Sp_M_IRATHO_GAN_S = 100 * (pmNoOutGanIratHoSuccSpeech / pmNoOutGanIratHoAttSpeech)
Multi_M_IRATHO_GAN_S = 100 * (pmNoOutGanIratHoSuccMulti / pmNoOutGanIratHoAttMulti)
PInt_M_IRATCC_GAN_S = 100 * (pmNoOutGanIratCcSucc / pmNoOutGanIratCcAtt)
PIntDCH_M_IRATCC_GAN_S = 100 * ((pmNoOutGanIratCcSucc - pmNoOutGanIratCcSuccHs) / (pmNoOutGanIratCcAtt - pmNoOutGanIratCcAttHs))
PIntHS_M_IRATCC_GAN_S = 100 * (pmNoOutGanIratCcSuccHs / pmNoOutGanIratCcAttHs)
PIntEUL_M_IRATCC_GAN_S = 100 * (pmNoOutGanIratCcSuccEul / pmNoOutGanIratCcAttEul)
Pint_M_HSCC_S = 100 * (pmNoHsCcSuccess / pmNoHsCcAttempt)
Pint_M_HStoDCHRC_S = 100 * (pmHsToDchSuccess / pmHsToDchAttempt)
PS_M_EULCC_S = 100 * (pmNoEulCcSuccess / pmNoEulCcAttempt)
PS_M_EULtoDCHRC_S = 100 * (pmEulToDchSuccess / pmEulToDchAttempt)
Ura_M_Upd_S = 100 * (pmNoUraUpdSuccess / pmNoUraUpdAttempt)
Sp_M_CNHHOIn_S = 100 * (pmNoSuccIncCnhhoSpeech / pmNoAttIncCnhhoSpeech)
Sp_M_CNHHOOut_S = 100 * (pmNoSuccOutCnhhoSpeech / pmNoAttOutCnhhoSpeech)
CS_M_CNHHOIn_S = 100 * (pmNoSuccIncCnhhoCsNonSpeech / pmNoAttOutCnhhoCsNonSpeech)
CS_M_CNHHOOut_S = 100 * (pmNoSuccOutCnhhoCsNonSpeech / pmNoAttOutCnhhoCsNonSpeech)

########################
#PAGING 
########################

RrcSucc = RrcSuc + 0
RrcSuccTerm = 100 * sum_time_pmTotNoTermRrcConnectReqSucc / sum_time_pmTotNoTermRrcConnectReq
TotalPageAnswer = sum_time_pmTotNoTermRrcConnectReq + 0
TotalPageAnswerToCore = sum_time_pmTotNoTermRrcConnectReqSucc + 0
TotalPageDiscardCentralMpPLoad = pmNoPageDiscardCmpLoadC + 0
TotalPageRejectUtrancell = sum_time_pmNoPagingAttemptUtranRejected
TotalPageType1 = pmCnInitPagingToIdleUeLa + pmCnInitPagingToIdleUeRa + pmCnInitPagingToIdleUe + pmCnInitPagingToUraUe + pmUtranInitPagingToUraUe
TotalPageType2 = sum_time_pmNoPagingAttemptCnInitDcch + 0
TotalPageReqFromCore = TotalPageDiscardCentralMpPLoad + TotalPageType1 + TotalPageType2 - pmUtranInitPagingToUraUe
PagingSuccessRate = 100 * TotalPageAnswer / (TotalPageDiscardCentralMpPLoad + TotalPageType1 - pmCnInitPagingToUraUe - pmUtranInitPagingToUraUe)
PagingSuccessRatePostRrc = 100 * TotalPageAnswerToCore / (TotalPageDiscardCentralMpPLoad + TotalPageType1 - pmCnInitPagingToUraUe - pmUtranInitPagingToUraUe)

########################
#PAGING in RinP
########################
PagingSuccRateRinpCS = 100 * pmTotNoTermRrcConnectReqCsSucc / pmCnInitPagingToIdleUeLa
PagingSuccRateRinpPS = 100 * pmTotNoTermRrcConnectReqPsSucc / pmCnInitPagingToIdleUeRa 
#PagingSuccRateRinpTot = 100 * pmTotNoTermRrcConnectReqSucc / pmCnInitPagingToIdleUe
PagingSuccRateRinpTot = 100 * pmTotNoTermRrcConnectReqSucc / ( pmCnInitPagingToIdleUeLa + pmCnInitPagingToIdleUeRa )

########################
#MULTIRAB
########################
include $moshelldir/commonjars/pm/FORMULA_MULTIRAB_RNC.txt

########################
#CPP FORMULAS
########################

include $moshelldir/commonjars/pm/FORMULA_CPP_0.txt

SP_I_UL = 100 * (pmFaultyTransportBlocksAcUl / pmTransportBlocksAcUl)

########################
#Integrity
#From Radio Network KPI W18.Q1 120/1553-HSD 101 02 Uen Rev AM
########################
CSAmrNb_I_ULBler = 100 * (pmFaultyActSpeechFramesNbUl / pmTotActSpeechFramesNbUl)
CSAmrWb_I_ULBler = 100 * (pmFaultyActSpeechFramesWbUl / pmTotActSpeechFramesWbUl)
PINTEUL10ms_I_Bler = 100 * (pmEulHarqTransmTti10Failure / (pmEulHarqTransmTti10PsRabs + pmEulHarqTransmTti10Failure))
PINTEUL2ms_I_Bler = 100 * (pmEulHarqTransmTti2Failure / (pmEulHarqTransmTti2PsRabs + pmEulHarqTransmTti2Failure))
PintDCH_I_TP = 8 * 1000 * (pmSentPacketData2 + pmSentPacketData3 + pmSentPacketData4) / (pmTotalPacketDuration2 + pmTotalPacketDuration3 + pmTotalPacketDuration4)
PintHS_I_TP = 8 * 1000 * (pmSentPacketDataHs3 + pmSentPacketDataHs4) / (pmTotalPacketDurationHs3 + pmTotalPacketDurationHs4)
PintHSFach_I_Tp_User = pmSumHsFachRlcUserPacketThp / pmSamplesHsFachRlcUserPacketThp
PintHS_I_DlTp_User = pmSumHsDlRlcUserPacketThp / pmSamplesHsDlRlcUserPacketThp
PintDCH_I_DlTp_User = pmSumDchDlRlcUserPacketThp / pmSamplesDchDlRlcUserPacketThp
PintDCH_I_UlTp_User = pmSumDchUlRlcUserPacketThp / pmSamplesDchUlRlcUserPacketThp
PintEUL_I_UlTp_User = pmSumEulRlcUserPacketThp / pmSamplesEulRlcUserPacketThp
PintDCDCH_I_DlLat = 1000 * (pmSumDchDchLatency / pmSamplesDchDchLatency)
PintDCHHS_I_DlLat = 1000 * (pmSumHsDchLatency / pmSamplesHsDchLatency)
PintEULHS_I_DlLat = 1000 * (pmSumHsEulLatency / pmSamplesHsEulLatency)
P_I_ChDSw_S = 100 * (pmDownSwitchSuccess / pmDownSwitchAttempt)
P_I_ChUSw_S = 100 * ((pmDlUpswitchSuccessLow + pmUlUpswitchSuccessLow + pmDlUpswitchSuccessMedium + pmUlUpswitchSuccessMedium + pmDlUpswitchSuccessHigh + pmUlUpswitchSuccessHigh + pmDlUpswitchSuccessHs + pmUlUpswitchSuccessEul) / (pmDlUpswitchAttemptLow + pmUlUpswitchAttemptLow + pmDlUpswitchAttemptMedium + pmUlUpswitchAttemptMedium + pmDlUpswitchAttemptHigh + pmUlUpswitchAttemptHigh + pmDlUpswitchAttemptHs + pmUlUpswitchAttemptEul))
CBS_BMC_CTCH_I = 100 * (pmNoDiscardedBmcCbsMsgs / pmNoAttScheduledBmcCbsMsgs)

########################
#System Utilization
#From Radio Network KPI W18.Q1 120/1553-HSD 101 02 Uen Rev AM
########################

Sp_U_Tot = (pmSumCs12RabEstablish / pmSamplesCs12RabEstablish) + (pmSumAmr12200RabEstablish / pmSamplesAmr12200RabEstablish) + (pmSumAmr7950RabEstablish / pmSamplesAmr7950RabEstablish) + (pmSumAmr5900RabEstablish / (2 * pmSamplesAmr5900RabEstablish)) + (pmSumAmr4750RabEstablish / (2 * pmSamplesAmr4750RabEstablish)) + (pmSumAmrWbRabEstablish / pmSamplesAmrWbRabEstablish) + (pmSumAmrNbMmRabEstablish / pmSamplesAmrNbMmRabEstablish)
CS57_U_User = pmSumBestCs57RabEstablish / pmSamplesBestCs57RabEstablish
CS57_U_Tot = pmSumCs57RabEstablish / pmSamplesCs57RabEstablish
CS64_U_User = pmSumBestCs64RabEstablish / pmSamplesBestCs64RabEstablish
CS64_U_Tot = pmSumCs64RabEstablish / pmSamplesCs64RabEstablish
Pint_U_User = (pmSumBestDchPsIntRabEstablish / pmSamplesBestDchPsIntRabEstablish) + (pmSumBestPsHsAdchRabEstablish / pmSamplesBestPsHsAdchRabEstablish) + (pmSumBestPsEulRabEstablish / pmSamplesBestPsEulRabEstablish) + (pmSumFachPsIntRabEstablish / pmSamplesFachPsIntRabEstablish)
Ura_U_User = pmSumRabUra / pmSamplesRabUra
PintFach_U_User = pmSumFachPsIntRabEstablish / pmSamplesFachPsIntRabEstablish
PintHsFach_U_User = pmSumHsFachPsIntRabEst / pmSamplesHsFachPsIntRabEst
PintEulFach_U_User = pmSumEulFachPsIntRabEst / pmSamplesEulFachPsIntRabEst
PintDCH_U_User = pmSumBestDchPsIntRabEstablish / pmSamplesBestDchPsIntRabEstablish
PintHs_U_User = (pmSumBestPsHsAdchRabEstablish / pmSamplesBestPsHsAdchRabEstablish) + (pmSumBestPsEulRabEstablish / pmSamplesBestPsEulRabEstablish)
PintHs_U_Conn = pmSumHsConnServ / pmSamplesHsConnServ
PintEul_U_User = pmSumBestPsEulRabEstablish / pmSamplesBestPsEulRabEstablish
PintEul2ms_U_User = pmSumBestPsIntEulTti2RabEst/pmSamplesBestPsIntEulTti2RabEst
SRBOnly34_U_User = pmSumBestSrbOnly34 / pmSamplesBestSrbOnly34
SRBOnly34_U_Tot = pmSumSrbOnly34 / pmSamplesSrbOnly34
SRBOnly136_U_User = pmSumBestRrcOnlyEstablish / pmSamplesBestRrcOnlyEstablish
SRBOnly136_U_Tot = pmSumRrcOnlyEstablish / pmSamplesRrcOnlyEstablish
SRBOnlyHS_U_User = (pmSumBestSrbOnlyHs / pmSamplesBestSrbOnlyHs) + (pmSumBestSrbOnlyEul / pmSamplesBestSrbOnlyEul)
SRBOnlyEUL_U_User = pmSumBestSrbOnlyEul / pmSamplesBestSrbOnlyEul
RACH_U_NegativeAich = 100 * pmNegativeMessages / (pmPositiveMessages + pmNegativeMessages)
RACH_U_NegativeAich = 100 * pmAichNegativeMessages / (pmAichPositiveMessages +  pmAichNegativeMessages)
FACH_U = 100 * (pmNoOfTfc1OnFach1 + pmNoOfTfc2OnFach1 + pmNoOfTfc3OnFach2) / (pmRopCounter * 60 * 60 * 100)
FACH_U = 100 * (pmNoOfTfc1OnFach1 + pmNoOfTfc2OnFach1 + pmNoOfTfc3OnFach2) / (pmRopCounter * 60 * 60 * 100)
FACH1_Sign_U = 100 * (pmNoOfTfc1OnFach1 + pmNoOfTfc2OnFach1) / (pmRopCounter * 60 * 60 * 100)
FACH1_Sign_U = 100 * (pmNoOfTfc1OnFach1 + pmNoOfTfc2OnFach1) / (pmRopCounter * 60 * 60 * 100)
Rrc_Blocking_CS = (pmNoRrcCsReqDeniedAdm + pmNoRrcConnReqBlockTnCs - pmNoLoadSharingRrcConnCs) / (pmTotNoRrcConnectReqCs - pmNoLoadSharingRrcConnCs)
Rrc_Blocking_Speech = (pmNoOfNonHoReqDeniedSpeech + pmNoRabEstBlockTnSpeechBest) / pmNoRabEstablishAttemptSpeech
Rab_Blocking_Speech = (pmNoOfNonHoReqDeniedSpeech + pmNoRabEstBlockTnSpeechBest) / pmNoRabEstablishAttemptSpeech
Rab_Blocking_CS = pmNoOfNonHoReqDeniedCs + ((pmNoRabEstBlockTnCs57Best + pmNoRabEstBlockTnCs64Best) / (pmNoRabEstablishAttemptCs64 + pmNoRabEstablishAttemptCs57))
Rrc_Blocking_PsInt = (pmNoRrcPsReqDeniedAdm + pmNoRrcConnReqBlockTnPs) / pmTotNoRrcConnectReqPs
Rab_Blocking_PsInt = (pmNoOfNonHoReqDeniedInteractive + pmNoRabEstBlockTnPsIntNonHsBest + pmNoRabEstBlockTnPsIntHsBest) / pmNoRabEstablishAttemptPacketInteractive


