Why hmd position is not the same as camera position?

I just realized that setting trackedposedriver to rotation only doesnt prevent camera transform to change position when i move, so i wonder why positions are not the same

I calculated the hmd world position and differs a lot from camera position using
public Vector3 HMDWorldPosition()
{
return mainCamera.cameraToWorldMatrix.MultiplyPoint(Quaternion.Inverse(InputTracking.GetLocalRotation(XRNode.Head)) * InputTracking.GetLocalPosition(XRNode.Head));
}

HmdWorld==(402,3, 7,7, 354,4)==CameraPos==(403,2, 6,7, 354,3)