code: def _retrieve_object(output_dict: Dict[str, Any], obj: Any) -> None:
      
      import ROOT
  
      # Store TH1 or THn
      if isinstance(obj, ROOT.TH1) or isinstance(obj, ROOT.THnBase):
          # Ensure that it is not lost after the file is closed
          # Only works for TH1
          if isinstance(obj, ROOT.TH1):
              obj.SetDirectory(0)
  
          # Explicitly note that python owns the object
          # From more on memory management with ROOT and python, see:
          # https://root.cern.ch/root/html/guides/users-guide/PythonRuby.html#memory-handling
          ROOT.SetOwnership(obj, False)
  
          # Store the object
          output_dict[obj.GetName()] = obj
  
      # Recurse over lists
      if isinstance(obj, ROOT.TCollection):
          # Keeping it in order simply makes it easier to follow
          output_dict[obj.GetName()] = {}
          # Iterate over the objects in the collection and recursively store them
          for obj_temp in list(obj):
              _retrieve_object(output_dict[obj.GetName()], obj_temp)
docs: Function to recursively retrieve histograms from a list in a ROOT file.
  
      ``SetDirectory(True)`` is applied to TH1 derived hists and python is explicitly given
      ownership of the retrieved objects.
  
      Args:
          output_dict (dict): Dict under which hists should be stored.
          obj (ROOT.TObject derived): Object(s) to be stored. If it is a collection,
              it will be recursed through.
      Returns:
          None: Changes in the dict are reflected in the output_dict which was passed.