with \f$ L_n^{(\alpha)}(r)\f$ the generalized Laguerre polynomials (notice that by default \f$ \alpha = 2\f$).

with $ L_n^{(\alpha)}(r)$ the generalized Laguerre polynomials (notice that by default $ \alpha = 2$).

For bnad-limited functions the discret sums are truncated with \f$ l <L\f$ and \f$ n < N\f$ (notice the L band-limit definition is not the same used for instance in `libsharp`). Focusing on the radial part only, one gets

\f[

For bnad-limited functions the discret sums are truncated with $ l <L$ and $ n < N$ (notice the L band-limit definition is not the same used for instance in `libsharp`). Focusing on the radial part only, one gets

and the r-values are the roots of the generalized Laguerre polynomial of order \f$N\f$ noted \f$r_i\f$ with i in [0,N-1]. From the orthogonality of the Laguerre functions, it yields the Gauss-Laguerre quadrature

\f[

$$

and the r-values are the roots of the generalized Laguerre polynomial of order $N$ noted $r_i$ with $i$ in $[0,N-1]$. From the orthogonality of the Laguerre functions, it yields the Gauss-Laguerre quadrature

The Spherical Harmonic part is done by `libsharp` and the reader is invited to have a look at the reference mentionned in the introduction.

The combined transformation (spherical and Laguerre) can be summarized by the following schema:

![img def](../fig-schema.png"Schema of global Analysis and Synthesis")

![img def](./fig-schema.png"Schema of global Analysis and Synthesis")

+**Analysis**:

The analysis process starts by gathering the 3D pixels real values \f$f_{ijk} \equiv f(\theta_i, \phi_j, r_k)\f$

where \f$r_k\f$ (\f$k\in\{0,\dots,N-1\}\f$) are the \f$N\f$ Laguerre zeros of \f$L_N(x)\f$ and \f$(\theta_i, \phi_j)\f$

are the 2D angles defined by a pixelization scheme.

For instance, one can use the ECP Fejer's sum rule with \f$N_\theta = 2L-1\f$ colatitude rings of \f$N_\phi \geq 2L-1\f$ iso-latitude pixels.

The analysis process starts by gathering the 3D pixels real values $f_{ijk} \equiv f(\theta_i, \phi_j, r_k)$ where $r_k$ ($k\in\{0,\dots,N-1\}$) are the $N$ Laguerre zeros of $L_N(x)$ and $(\theta_i, \phi_j)$ are the 2D angles defined by a pixelization scheme. For instance, one can use the ECP Fejer's sum rule with $N_\theta = 2L-1$ colatitude rings of $N_\phi \geq 2L-1$ iso-latitude pixels.

Then, one proceeds as followed

+ for the \f$k\f$th-radial shell, one performs a Spherical Harmonic decomposition using for instance the `map2alm` routine of `libsharp` to get the set of complex coefficients \f$a_{lmk}=a_{lm}(r_k)\f$ with \f$l\in\{0,\dots,L-1\}\f$ and \f$m \in\{0,\dots,l\}\f$ (the notation remind the underlying 2D Spherical Harmonic transform and the usual way to note the resulting coefficients \f$a_{lm}\f$);

+ for each \f$(l,m)\f$, one uses the set of values \f$a_{lmk}\f$ with \f$k\in\{0,\dots,N-1\}\f$ to determine the \f$f_{lmn}\f$ complex coefficients thanks to the following simplified relation

\f[

+ for the $k$th-radial shell, one performs a Spherical Harmonic decomposition using for instance the `map2alm` routine of `libsharp` to get the set of complex coefficients $a_{lmk}=a_{lm}(r_k)$ with $l\in\{0,\dots,L-1\}$ and $m \in\{0,\dots,l\}$ (the notation remind the underlying 2D Spherical Harmonic transform and the usual way to note the resulting coefficients $a_{lm}$);

+ for each $(l,m)$, one uses the set of values $a_{lmk}$ with $k\in\{0,\dots,N-1\}$ to determine the $f_{lmn}$ complex coefficients thanks to the following simplified relation

+ then, thanks to the Inverse Spherical Harmonic Transform, `alm2map` routine of `libsharp`, ones determines the real \f$f_{ijk}\f$ pixel values.

$$

+ then, thanks to the Inverse Spherical Harmonic Transform, `alm2map` routine of `libsharp`, ones determines the real $f_{ijk}$ pixel values.

We take advantage from the Matrix Multiplication writing of the \f$f_{lmn} \leftrightarrow a_{lmk}\f$ passage to use efficient algorithm or even more efficiently the BLAS-like libraries (OpenBLAS for Linux and the native Accelerate framework on Mac OS X).

We take advantage from the Matrix Multiplication writing of the $f_{lmn} \leftrightarrow a_{lmk}$ passage to use efficient algorithm or even more efficiently the BLAS-like libraries (OpenBLAS for Linux and the native Accelerate framework on Mac OS X).

The main classes in brief

------------------------

+ The LagSHT::LaguerreFuncQuad class deals with the computation of the weights and nodes of the Gauss-Laguerre quadrature with special care of the numerical validity of the computation.

+ The LagSHT::LaguerreTransform class implement the radial Laguerre Transformation part in the forward (Analysis) and backward (Synthesis) direction. The class also provides access to the radial pixelization (methods **R2Index** and **Index2R**) as the k-th shell has the radius (in physical units) \f$R_k\f$:

\f[

+ The LagSHT::LaguerreTransform class implement the radial Laguerre Transformation part in the forward (Analysis) and backward (Synthesis) direction. The class also provides access to the radial pixelization (methods **R2Index** and **Index2R**) as the k-th shell has the radius (in physical units) $R_k$:

$$

R_k = R_{max} \times \frac{r_k}{r_{N-1}}

\f]

with \f$r_k\f$ the k-th roots of the Laguerre polynomial of order N.

$$

with $r_k$ the $k$-th roots of the Laguerre polynomial of order $N$.

+ The *lagsht_spheregeom.h* file includes the different 2D-Sphere pixelization schemes available derived from the LagSHT::BaseGeometry class. This class provides access to the pixelization throw the methods **PixIndexSph** and **PixThetaPhi**. The first method provides the pixel index at a given \f$(\theta, \phi)\f$ position, while the second method does the reverse by providing the \f$(\theta, \phi)\f$ position of a given pixel index.

+ The *lagsht_spheregeom.h* file includes the different 2D-Sphere pixelization schemes available derived from the LagSHT::BaseGeometry class. This class provides access to the pixelization throw the methods **PixIndexSph** and **PixThetaPhi**. The first method provides the pixel index at a given $(\theta, \phi)$ position, while the second method does the reverse by providing the $(\theta, \phi)$ position of a given pixel index.

+ The LagSHT::LaguerreSphericalTransform class performs the combinaison of the Laguerre transform and the Spherical Harmonic transform.