docs: def apply_snapshot(self, argset):
          """
          Create a clone of this Channel where histograms are modified according
          to the values of the nuisance parameters in the snapshot. This is
          useful when creating post-fit distribution plots.
  
          Parameters
          ----------
  
          argset : RooArtSet
              A RooArgSet of RooRealVar nuisance parameters
  
          Returns
          -------
  
          channel : Channel
              The modified channel
  
          """
          clone = self.Clone()
          args = [var for var in argset if not (
              var.name.startswith('binWidth_obs_x_') or
              var.name.startswith('gamma_stat') or
              var.name.startswith('nom_'))]
          # handle NormFactors first
          nargs = []
          for var in args:
              is_norm = False
              name = var.name.replace('alpha_', '')
              for sample in clone.samples:
                  if sample.GetNormFactor(name) is not None:
                      log.info("applying snapshot of {0} on sample {1}".format(
                          name, sample.name))
                      is_norm = True
                      # scale the entire sample
                      sample *= var.value
                      # add an OverallSys for the error
                      osys = OverallSys(name,
                          low=1. - var.error / var.value,
                          high=1. + var.error / var.value)
                      sample.AddOverallSys(osys)
                      # remove the NormFactor
                      sample.RemoveNormFactor(name)
              if not is_norm:
                  nargs.append(var)
          # modify the nominal shape and systematics
          for sample in clone.samples:
              # check that hist is not NULL
              if sample.hist is None:
                  raise RuntimeError(
                      "sample {0} does not have a "
                      "nominal histogram".format(sample.name))
              nominal = sample.hist.Clone(shallow=True)
              for var in nargs:
                  name = var.name.replace('alpha_', '')
                  if not sample.has_sys(name):
                      continue
                  log.info("applying snapshot of {0} on sample {1}".format(
                      name, sample.name))
                  low, high = sample.sys_hist(name)
                  # modify nominal
                  val = var.value
                  if val > 0:
                      sample.hist += (high - nominal) * val
                  elif val < 0:
                      sample.hist += (nominal - low) * val
                  # TODO:
                  # modify OverallSys
                  # modify HistoSys
          return clone