EstAci <- function(param, para0, HmL, p=0.05, lower=NULL){
  namepara <- paste0("lambda.", 1:length(param))
  #---------ACI-------------
  zp <- abs(qnorm(p/2))
  var.param <- abs(solve(HmL))
  if(any(is.nan(sqrt(diag(var.param))))){
    print(param)
    print(var.param)
  }
  ci.L <- param - zp * sqrt(diag(var.param))
  if(any(ci.L < lower)){
    id <- which(ci.L < lower)
    ci.L[id] <- lower[id]
  }
  ci.U <- param + zp * sqrt(diag(var.param))
  CIm <- data.frame(ci_L=ci.L, ci_U=ci.U, ci_length=(ci.U-ci.L), cover=as.numeric(((para0 >= ci.L) & (para0 <= ci.U))))
  rownames(CIm) <- namepara
  list(para.mle=param, hess=HmL, varM=var.param, Aci=CIm)
}
