Closed jablazek closed 2 years ago
~Similarly, in CCL, is the current TATT call double-counting the linear contribution, which assumes a built-in NLA?~
UPDATE: The current method of using a WLTracer with IA_bias=1 is correct, since we input the correct P_k_a, which is multiplied by the IA_bias.
firecrown: https://github.com/LSSTDESC/firecrown/blob/master/firecrown/likelihood/gauss_family/statistic/source/weak_lensing.py#L182
CCL: https://github.com/LSSTDESC/CCL/blob/master/pyccl/tracers.py#L719
For alphag==1
the growth term in firecrown drops out but the default in the DES Y1 3x2pt example is -1: https://github.com/LSSTDESC/firecrown/blob/master/examples/des_y1_3x2pt/des_y1_3x2pt_values.ini#L27
Looking at the history, alphag
has used -1 since old firecrown in the examples. @beckermr, do you remember why?
I don't recall exactly. I think I went through the different codes and put in what I thought would be the value that got the right total power of the growth function. I of course could have done that wrong!
Hi all, @chihway and I have looked at this today and found that in the DES Y3 model, alphag
should be 0, according to the equations from the cosmic shear paper, see screen shot below for the TATT model. Just to make sure we're all in the same page, we understand that alphag
is defined as an exponent in the growth factor in the following way: D^(alphag-1), so we should have alpha=0 for the NLA model, and alpha = -1 for the tidal torque part of the TATT model?
Right, the issue is that for use_A_ia==True
, CCL adds the other prefactors (C1, rho_cr, Om), including 1/D, so on the firecrown side it should only set a1 and the redshift scaling, as far as I understand the code.
I see, so what you are saying is that firecrown should have alphag=1
to remove the dependency on D, because it is already implemented in CCL? I think we can do that and rerun everything, however probably this should be changed since it is quite confusing. Ideally if Firecrown should not include any D dependency maybe it should be dropped from the code and we shouldn't need to set alpha_g at all? or else propagate the dependency to CCL. What do you think it is best?
My plan is to add functionality to firecrown that allows hiding these parameters from the user (eg #194) but in the short term, setting alphag=1
is probably the way to go.
CCL has a function to do this bookkeeping for us:
c_1,c_d,c_2 = pt.translate_IA_norm(cosmo, z, a1=a_1, a1delta=a_d, a2=a_2, Om_m2_for_c2 = False)
I would suggest we use this function as the baseline, and then give the additional option to add other growth or redshift dependence. But then the default power laws should be zero.
@jablazek where is alphag being added in this function? (sorry I'm a bit confused about your last comment..)
@jpratmarti : Sorry, I should have been more descriptive. That function implements eqs 24 and 25 as you posted above. So you only need to pass a1, a2, a_delta as the sampled parameters. Any growth or redshift dependence that deviates from those eqs can be applied to the parameters ~separately~ in addition. So Firecrown should start with that CCL function (I believe this is what @tilmantroester 's draft implementation does already), and then additional dependence can be added.
I think that's already what's happening. Firecrown uses a1 but then adds on some extra redshift and growth scaling. The issue is that there is a non-standard growth scaling, unless you know what the alphag
parameter is and know to set alphag = 1
. We can fix this by either introducing sensible defaults for these obscure parameters (see #194) and/or just remove this extra scaling.
Is alphag correctly defined given how CCL treats the growth scaling? (use_A_ia = True)