def METHOD_NAME(self, ptype, index=0, offset=None):
    """Fills the particle position cache for the ``ptype``.
    Parameters
    ----------
    ptype : str
        The on-disk name of the particle species
    index : int, optional
    offset : int, optional
    """
    if str((ptype, index, offset)) not in self._cached_ptype:
        self._cached_ptype = str((ptype, index, offset))
        pds = self._handle[self.base_path + self.particles_path + "/" + ptype]
        axes = list(pds["position"].keys())
        if offset is None:
            if is_const_component(pds["position/" + axes[0]]):
                offset = pds["position/" + axes[0]].attrs["shape"]
            else:
                offset = pds["position/" + axes[0]].len()
        self.cache = np.empty((3, offset), dtype=np.float64)
        for i in np.arange(3):
            ax = "xyz"[i]
            if ax in axes:
                np.add(
                    get_component(pds, "position/" + ax, index, offset),
                    get_component(pds, "positionOffset/" + ax, index, offset),
                    self.cache[i],
                )
            else:
                # Pad accordingly with zeros to make 1D/2D datasets compatible
                # These have to be the same shape as the existing axes since that
                # equals the number of particles
                self.cache[i] = np.zeros(offset)