You should be able to use humanoid_localization code with point clouds without converting them to a laser scan (which will also be better). We've used the code as it is published for the paper you mention above, although with an Asus Xtion sensor. So you should first ensure your point clouds are all in order (no nans, invalid values or similar). The callback pointCloudCallback is then called, using the functions prepareGeneralPointCloud and localizeWithMeasurement. So laserCallbackshould not be used at all.
Otherwise you can trace what's happening e.g. with rxconsole setting the log level to "debug". Set num_particles to something small so you don't get thousands of errors in that case.