I am thinking of making a modification to how the halo profiler works, which I think will be an improvement. I wanted to pass this idea by you all (especially Britton) just to make surre I'm not stepping on any toes or there's some problem with this I haven't thought of.
Currently, if you want to adjust the center of a halo for the purposes
of making the profile, such as to the point of maximum gas density in
the sphere defined by the halo, you'd call the HaloProfiler with
use_density_center=True. But if instead you want to use some other
fields maximum point, you specify it using the
use_field_max_center keyword. There is no functionality for
specifying that the center should be moved to the minimum of some
quantity, like the temperature for a cool-core cluster. I could easily
add a parameter like that
use_field_min_center, but I think that
this is quickly becoming unwieldy and inelegant.
I propose that these two extant parameters, and any future ones like the example above, be replaced by a simple function that can be passed to the HaloProfiler object. For example, if you'd want to recenter on the maximum density point, it might look something like this:
def _recenter_on_dens(sphere): ma, maxi, mx, my, mz, mg = sphere.quantities'MaxLocation' return [mx,my,mz]
hp = HP.halo_profiler("DD0242/DD0242", recenter=_recenter_on_dens)
The function can do whatever the user wants, unlike the limitations of the specific parameters currently in the HaloProfiler. I'd of course add some useful examples to the documentation. Let me know what you think, thanks!
-- Stephen Skory email@example.com http://stephenskory.com/ 510.621.3687 (google voice)