Maciek,
one way to approach the dense cloud height validation would be to use dense_cloud.pickPoint method. Given a check point p1 , you would create a point p0 = (p1.x, p1.y, 0) (same x,y as p1 with altitude 0)
and then use dense_cloud.pickPoint(p0,p1) to find intersection of vertical at p1 with cloud. Compare the intersection.z with p1.z and populate your error statistics with np....
This could be a starting point...
In example shown, code reads the validation points coordinates from a file (PuntosFinales.txt), compares the Z with dense cloud using pickPoint and prints out the AVGZ error, STDZ and RMSZ....
Second example shows result using 7 validation check points ... the green lines represent the dense_cloud.pickPoint vertical rays....