class_public icon indicating copy to clipboard operation
class_public copied to clipboard

Add A_lens to CLASS

Open carlosggarcia opened this issue 4 years ago • 4 comments

I think A_lens (Cl^phi-phi -> A_lens Cl^phi-phi) is not available in CLASS. If so, it might be useful to add it to CLASS.

I've implemented it in my fork: https://github.com/carlosggarcia/class_public/tree/issue342

The patch is this one: 0001-implemented-A_lens-Cl-pp-Alense-Cl-pp.patch.txt

carlosggarcia avatar Jun 15 '20 12:06 carlosggarcia

Hi Carlos, One must be careful here. In the literature, people talk about different A_Lens, A_L, A_phi-phi, etc.

a) I would say that what you propose here will indeed rescale C_l^phi-phi everywhere: both in the calculation of lensing smoothing effects in the lensed C_l^TT, TE, EE, BB, and in the final C_l^phi-phi that CLASS gives in output (and that is used e.g. by the Planck CMB lensing likelihood). Such a parameter actually already existed in CLASS since the beginning, although you don't find it advertised in explanatory.ini. It is called lcm_rescale. It acts on phi rather than on C_l^phi-phi, so your A_lens should be the same as (lcmb_rescale)**2.

b) But I think that the parameter A_L that is discussed very often in the context of the "Planck A_L anomaly" (if any) is a bit different: it is a factor applied only to the calculation of lensing smoothing effects in the lensed C_l^TT, TE, EE, BB, but the final C_l^phi-phi used in the CMB lensing likelihoods is unchanged. For this, I would do things differently, by changing 4 lines. I list the changes below. I should certainly propagate this small addition to the public code in a near future. What I write below applies to class <= v2.9.3, which is the latest version at the time of writing.

  1. In source/ lensing.c: replace

    cl_pp[l] = cl_unlensed[ple->index_lt_pp];

with

cl_pp[l] = ple->A_L*cl_unlensed[ple->index_lt_pp];
  1. In include/lensing.h: just after

    short has_lensed_cls; /**< do we need to compute lensed \f$ C_l\f$'s at all ? */

define

double A_L;   /**< rescale C_l^phi-phi just for the calculation of the lensed TT, TE, EE */
  1. in source/input.c: somewhere in input_read_parameters(), for instance just before:

    /** (g) amount of information sent to standard output (none if all set to zero) */

add

class_read_double("A_L", ple->A_L);
  1. and still in source input.c, just after

    ple->has_lensed_cls = FALSE;

add the default value

ple->A_L=1.

lesgourg avatar Jun 30 '20 16:06 lesgourg

Hi Julien,

Thank you for the explanation. I had missed the part of not modifying the Cl^phi-phi that is compared with the CMB lensing data. I've done the modifications that you suggest and push it to a new branch of my fork: https://github.com/carlosggarcia/class_public/tree/issue342_2.

Here is the patch in case anyone wants to use it. 0001-added-A_L-modify-lensed-Cl-TT-TE-etc.-but-not-phiphi.patch.txt

Best, Carlos

carlosggarcia avatar Jul 02 '20 11:07 carlosggarcia

Hello,

So, if I want to reproduce the results (36a) and (36b) from the Planck's article (arXiv:1807.06209), what parameter should I consider ? (lcmb_rescale)**2 or A_L ?

Thank you in advance,

Javier

jdecruz avatar Oct 07 '20 08:10 jdecruz

Hi Julien et al,

I was wondering if the recommended changes to the source code for implementing the A_L parameter a' la Planck (or alens in CAMB) are still valid for the more recent versions of CLASS.

I'm mostly asking because I noticed that some of the mentioned reference lines are gone (e.g., /** (g) amount of information sent to standard output (none if all set to zero) */).

Cheers!

fbianchini avatar Aug 14 '23 18:08 fbianchini