docs: def _get_mean(self, vs30, mag, rrup, imt, scale_fac):
          """
          Compute and return mean
          """
          C_HR, C_BC, C_SR, SC = self._extract_coeffs(imt)
  
          rrup = self._clip_distances(rrup)
  
          f0 = self._compute_f0_factor(rrup)
          f1 = self._compute_f1_factor(rrup)
          f2 = self._compute_f2_factor(rrup)
  
          pga_bc = self._get_pga_bc(
              f0, f1, f2, SC, mag, rrup, vs30, scale_fac
          )
  
          # compute mean values for hard-rock sites (vs30 >= 2000),
          # and non-hard-rock sites (vs30 < 2000) and add soil amplification
          # term
          mean = np.zeros_like(vs30)
          self._compute_mean(C_HR, f0, f1, f2, SC, mag, rrup,
                             vs30 >= 2000.0, mean, scale_fac)
          self._compute_mean(C_BC, f0, f1, f2, SC, mag, rrup,
                             vs30 < 2000.0, mean, scale_fac)
          self._compute_soil_amplification(C_SR, vs30, pga_bc, mean)
  
          # convert from base 10 to base e
          if imt == PGV():
              mean = np.log(10 ** mean)
          else:
              # convert from cm/s**2 to g
              mean = np.log((10 ** mean) * 1e-2 / g)
  
          return mean