Hamiltonian Monte Carlo algorithm