docs: def total(self, xbin1=1, xbin2=-2):
          """
          Return the total yield and its associated statistical and
          systematic uncertainties.
          """
          integral, stat_error = self.hist.integral(
              xbin1=xbin1, xbin2=xbin2, error=True)
          # sum systematics in quadrature
          ups = [0]
          dns = [0]
          for sys_name in self.sys_names():
              sys_low, sys_high = self.sys_hist(sys_name)
              up = sys_high.integral(xbin1=xbin1, xbin2=xbin2) - integral
              dn = sys_low.integral(xbin1=xbin1, xbin2=xbin2) - integral
              if up > 0:
                  ups.append(up**2)
              else:
                  dns.append(up**2)
              if dn > 0:
                  ups.append(dn**2)
              else:
                  dns.append(dn**2)
          syst_error = (sqrt(sum(ups)), sqrt(sum(dns)))
          return integral, stat_error, syst_error