docs: def _compute_forearc_backarc_term(self, C, sites, dists, rup):
          """
          Compute back-arc term of Equation 3
  
          """
          # flag 1 (R < 335 & R >= 205)
          flag1 = np.zeros(len(dists.rhypo))
          ind1 = np.logical_and((dists.rhypo < 335), (dists.rhypo >= 205))
          flag1[ind1] = 1.0
          # flag 2 (R >= 335)
          flag2 = np.zeros(len(dists.rhypo))
          ind2 = (dists.rhypo >= 335)
          flag2[ind2] = 1.0
          # flag 3 (R < 240 & R >= 140)
          flag3 = np.zeros(len(dists.rhypo))
          ind3 = np.logical_and((dists.rhypo < 240), (dists.rhypo >= 140))
          flag3[ind3] = 1.0
          # flag 4 (R >= 240)
          flag4 = np.zeros(len(dists.rhypo))
          ind4 = (dists.rhypo >= 240)
          flag4[ind4] = 1.0
  
          A = flag1 * ((205 - dists.rhypo)/150) + flag2
          B = flag3 * ((140 - dists.rhypo)/100) + flag4
          if (rup.hypo_depth < 80):
              FHR = A
          else:
              FHR = B
  
          H0 = 100
          # Heaviside function
          if (rup.hypo_depth >= H0):
              H = 1
          else:
              H = 0
  
          # ARC = 0 for back-arc - ARC = 1 for forearc
          ARC = np.zeros(len(sites.backarc))
          idxarc = (sites.backarc == 1)
          ARC[idxarc] = 1.0
  
          return ((C['c41'] * (1 - ARC) * H) + (C['c42'] * (1 - ARC) * H * FHR) +
                  (C['c51'] * ARC * H) + (C['c52'] * ARC * H * FHR))