use self defined S4 class to replace Matrix::dgCMatrix