SolarOrbiter CDF L2 data format
===============================

Documents :

* link:/documents/METADATA[]

== Level 1 CDF files content

=== PAS L1 3D data

++/DATA/SOLAR/DATA/L1/yyyymmdd/solo_L1_swa-pas-3d_yyyymmdd_V00.cdf++

[options="header", cols="10,10,10,10,50"]
|===
| Variable | Type | Size | Vary | Description
| Epoch | TT2000 | | T | Start acquisition time
| Duration | CDF_FLOAT |  | T | Acquisition duration
| CCSDS_coarse_time | CDF_UINT4 |  | T | CCSDS coarse time
| CCSDS_fine_time | CDF_UINT2 |  | T | CCSDS fine time
| SCET_coarse_time | CDF_UINT4 |  | T | SCET coarse time
| SCET_fine_time | CDF_UINT2 |  | T | SCET fine time
| SOURCE | CDF_UINT1 |  | T | Source (0: Normal, 1: Snapshot, 2: Burst, 3: Trigger
| SAMPLE | CDF_INT2 |  | T | Current sample
| NB_SAMPLE | CDF_INT2 |  | T | Number of samples
| K | CDF_INT2 |  | T | Current sub-sampling
| NB_K | CDF_INT2 |  | T | Number of sub-samping per second
| FIRST_ENERGY | CDF_INT2 |  | T | First energy bin
| NB_ENERGY | CDF_INT2 |  | T | Number energy bins
| FIRST_ELEVATION | CDF_INT2 |  | T | First elevation bin
| NB_ELEVATION | CDF_INT2 |  | T | Number elevation bins
| NB_CEM | CDF_INT2 |  | T | Number CEM
| INFO | CDF_UINT1 |  | T | Info 
| SCHEME | CDF_UINT1 |  | T | Scheme
| FULL_3D | CDF_UINT1 |  | T | Full 3D
| COMPRESSED | CDF_UINT1 |  | T | Compressed data 
| MAX_CNT_ENERGY | CDF_INT2 |  | T | Max count energy bin
| MAX_CNT_ELEVATION | CDF_INT2 |  | T | Max count elevation number
| MAX_CNT_CEM | CDF_INT2 |  | T | Max count CEM
| COUNTS | CDF_UINT2 | 11x9x96 | T | 3D counts
| Energy_table | CDF_REAL4 | 96 | F | Cenetr of energy bins
| Energy_delta_plus | CDF_REAL4 | 96 | F | Energy bins delta plus values
| Energy_delta_minus | CDF_REAL4 | 96 | F | Energy bins delta minus values
| CEM_table | CDF_REAL4 | 11 | F | Center of CEM bins
| Elevation_table | CDF_REAL4 | 9 | F | Center of elevation bins
| CEM_table_delta | CDF_REAL4 | 11 | F | CEM_table_delta
| Elevation_table_delta | CDF_REAL4 | 9 | F | Elevation_table_delta
|===

=== Remarques

==== Datation

* Epoch : correspond au Start-acquisition time

* Duration : duree acquisition en secondes 

La date d'acquisition est calculee a partir de :

* SCET_coarse : nombre de secondes (depuis 2000-01-1T00:00:00Z)
* SCET_fine : nombre de 1/65536 s

On dispose aussi de CCSDS_fine et CCSDS_coarse : represente date de transmission par le soft de bord (SCET < CCSDS)

Duration vaut normalement 1s ou 1s/NB_K quand il y a de 1 a NB_K sous-echantillons par secondes

==== 3D description

Chaque enregistrement comptient une matrice de comptages possibles : 9 x 11 x 96 x UINT2.

Tout ou partie de la matrice de comptage contient des comptages, definis par :

- FIRST_ENERGY, NB_ENERGY : numero premiere et nombre d'energies energie
- FIRST_ELEVATION, NB_ELEVATION : numero premiere elevation et nombre d'elevations
- NB_CEM : nombre de canaux

Il y a donc NB_ENERGY x NB_ELEVATION x NB_CEM comptages utiles.

Le reste etant des FILLVALUE

[CAUTION]
--
Il manque une variable START_CEM qui est codee en dur dans le code de traitement.

Cela depend de NB_CEM pouvant etre egal a 7 ou 11

On prend les CEM centraux si NB_CEM = 7 => START_CEM = 1
--

Les variables SAMPLE et NB_SAMPLE indiquent pour le mode burst (max 5 minutes = 300 enregistrements)
le numero de l'echantillon.

D'autres variables decrivent les donnees :

- FULL_3D : (0/1) indique que tous les comptages sont renseignes : on doit avoir 92 x 9 x 11 valeurs
- COMPRESSED : (0/1) indique que les donnees ont ete compressees a bord
- SOURCE : Normal, Snapshot, Burst mode, Trigger mode
- INFO :  Ground, Normal, Snaphsot, Burst
- SCHEME : dynamique ou statique

Il y a aussi des indices pour savoir dans quelle cellule on a rencontre le maximum de comptages :

- MAX_COUNT_ENERGY, MAX_COUNT_ELEVATION et MAX_COUNT_CEM

==== Example

link:/documents/METADATA/PAS_3D_20190911.txt[]

=== Description matrice des comptages

CAUTION: Il faudra revoir cette partie qui est plus complexe que ce qui est decrit ci-dessous

La matrice de comptages est un tableau de dimension 3.

Chaque dimension est decrite par une variable "globale" pour chaque fichier CDF.

- Energy_table : 96 valeurs  (centrales)
- CEM_table : 11 valeurs (centrales)
- Elevation_table : 9 valeurs (centrales)

CEM_table et Elevation_table ont un DELTA_PLUS et DELTA_MINUS fixe representant un demi-intervalle (degres)

Energy_table necessite deux variables DELTA_PLUS et DELTA_MINUS de 96 valeurs correspondant permettant de decrire 
chaque intervalle logarithmique (differences avec valeur centrale)

NOTE: Les valeurs des tables sont representees dans le repere instrument.

== Level 2 CDF files

=== Datation

D'apres les documents du groupe de travail sur les metadonnees il faudrait suivre les recommandations suivantes :

- EPOCH : devrait representer le milieu de l'intervalle d'acquisition, et avoir les attributs 

**  DELTA_PLUS_VAR = half_interval 
** DELTA_MINUS_VAR = half_interval

- half_interval : duree de la moitie de l'intervalle (1s/2, ou 1/2/NB_K s)

Autres variables :

On pourra conserver quand meme le start_acquisition dans une autre variable, par exemple SCET avec duration = 2 * half_interval

Plutot que de conserver les deux variables coarse_time et fine_time, le document demande de definir une seule variable,
de type CDF_REAL8, contenant un nombre de secondes.

Par exemple : 

	SCET = (float) SCET_coarse + SCET_fine / 65536

	CCSDS = (float) CCSDS_coarse + CCSDS_fine / 65536

Cela facilite les traces et les calculs de differences entre deux acquisitions.


=== Autres recommandations

* Matrice passage instrument => salellite

Le document link:/documents/METADATA/METADATA_MADAWG.pdf[] conseille d'ajouter dans les fichiers CDF la matrice de passage 
du repere instrument (PAS) au repere satellite.

* Autres metadonnees

Il faudra decrire plus de metadonnees : y a t-il un groupe de travail (MADAWG) charge de la verification, coherence des metadonnees

=== Estimation volume des donnees

Chaque enregistrement contient 9 x 11 x 96 x CDF_REAL4 = 38016 octets

Il peut y avoir 24 x 60 x 60 / 4s = 21600 enregistrements

Soit une taille de 821145600 octets 783 Mio ~ 800 MB
=== Commentaires sur document Andrei

=== Description des diverses tables

Preciser pour chaque table :

- les tables ou dimensions qui sont dependante du temps (record varying = True)

==== PAS_to_RTN_cosines

On peut envisager d'utiliser les spice-kernels pour passer du reperte instrument -> satellite -> RTN

On doit pouvoir generer la matrice de rotation en fonction du temps de chaque enregistrement.

Sinon, preciser les dimensions qui dependent du temps (elevation et CEM a priori).

Les energies ne dependent pas de la position du satellite.

Il faut peut etre eclater les tableaux Azimuth_table[96][9][11] et Elevation_table [96][9][11]

Si on doit fournir une matrice de definition [96][9][11] pour chaque enregistrement,
cela multiple par 4 la taille des donnees : comptage, emin, emax, emoy (pour chaque bin en energie)

800 MB => 3.2 GB