Hopefully a simple enough guide to get the basics of such geometry. It might have a few flaws, but it might help you in the right direction at least.
The geometry is probably done using the arch tool which is ideal to make some round brushwork. This should be the first step to do since texture alignment is relatively easy to perform once the circle has been made.
Since the arch tool doesnt give 1 brush that has the outer section on a 90 degree angle you cant blindly apply a face to it. Instead, you take the inner circle section instead and apply the face there. Since that face is still at a 90 degree verticaly that gives you a stable axis that is perfectly on grid. You then complete the whole circle on that inner part.
Select 1 face from the inner part and using alt+right click you can then click the top surface and it will align itself to the inner section. You repeat that process for all parts of the circle and it will give a neat circled texture on top. You then can change the inner circle texture if desired.
The next step to for example get an angled roof you use the vertex tool to move those vertices upward. The texture method remains the same