The OnCollision delegate does what you want. You need to subscribe to it like this:
myGeom.OnCollision += myOnCollisionCallback;
Then you create the callback that gets called by the delegate:
private bool myOnCollisionCallback(Geom g1, Geom g2, ContatList contacts)
Inside the contacts variable you have all the contacts generated by the collision. You have the normals and position of the contacts. May I remind you that normals are relative to the creation order of the geometries.