How do I make smoke fill a specific object
I think this has been asked previously here:

Why isn&#39;t smoke flowing with the shape of the domain?

Basically - use a cube as usual as your smoke domain, and within that add your hollow hat-shaped object, make it a 'collision' object in the physics properties, and place your smoke emitters within that object.