05.03.2014 Views

Étude des pauses de longue durée dans un ... - IPNL - IN2P3

Étude des pauses de longue durée dans un ... - IPNL - IN2P3

Étude des pauses de longue durée dans un ... - IPNL - IN2P3

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Nicolas DARDE

RAPPORT DE STAGE DUT

14 avril – 20 juin 2008

Étude des pauses de longue durée dans un détecteur

infra-rouge.

Étalonnage, analyse des données.

INSTITUT DE PHYSIQUE NUCLEAIRE DE LYON

Centre de formation : Département Génie Électrique et Informatique Industrielle

I.U.T. B – Université Claude Bernard Lyon 1

Lieu du Stage: I.P.N - U.C.B Lyon 1 – Campus de la Doua

Maitre de Stage: Mme C. MAINTENAY

Tuteur de Stage: Mr G. SMADJA

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 1


Nicolas DARDE

RAPPORT DE STAGE DUT

14 avril - 20 juin 2008

Étude des pauses de longue durée dans un détecteur

infra-rouge.

Étalonnage, analyse des données.

INSTITUT DE PHYSIQUE NUCLEAIRE DE LYON

Bâtiment Paul Dirac

Université Claude Bernard Lyon 1

Domaine Scientifique de la Doua

4, rue Enrico Fermi

69622 Villeurbanne cedex, France

Maitre de Stage: Mme C. MAINTENAY

Tuteur de Stage: M G. SMADJA

Centre de formation : Département Génie Électrique et Informatique Industrielle

I.U.T. B – Université Claude Bernard Lyon 1

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 2


Remerciements

Je remercie tout d'abord Mr G. Smadja qui m'a accepté pour ce stage et m'a fait

confiance tout le long. C'est lui qui m'a guidé et tout expliqué durant ces deux mois et

demi. Je voudrais remercier également Florence et David avec qui j'ai travaillé dans le

laboratoire de cryogénie, leur bonne humeur a rendu ce stage très agréable.

Citations

« Quand on cherche, on trouve ! » ( M Smadja )

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 3


Sommaire

Remerciements ......................................................................................page 3

Sommaire ..............................................................................................page 4

Table des illustrations..............................................................................page 4

Résumé ..................................................................................................page 7

Préambule ..............................................................................................page 8

Partie 1 : L'I.P.N.L .................................................................................page 9

A) L'I.P.N.L :....................................................................................page 9

B) Le groupe Astro-particules/neutrinos : ...................................page 11

a) présentation : .................................................................page 11

b) le groupe supernovae : ..................................................page 12

Partie 2 : Partie technique.....................................................................page 13

Introduction............................................................................................page 13

Qu'est-ce qu'une Supernovae?........ ...................................................page 13

1. Le dispositif expérimental..................................................................page 14

A) Le fonctionnement du dispositif: .............................................page 14

B) Le détecteur H1RG : ...............................................................page 16

C) Lecture du détecteur et description des tests: ........................page 17

2. Le bruit: ............................................................................................page 23

A) Présentation : .........................................................................page 23

a) bruit de lecture, bruit de Poisson : .................................page 23

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 4


) Pourquoi le bruit est-il si important?................................page 24

B) Calcul sur le bruit de Poisson ...............................................page 26

3. Réalisation des programmes et résultats..........................................page 28

A) Les Programmes en C : ..........................................................page 28

a) Le programme readFrame.c : ........................................page 29

b) Le programme readFrame_pack.c : ...............................page 32

c)Le programme readFrame_burst.c : ...............................page 35

B) Analyse des résultats obtenus : ..............................................page 35

Conclusion technique ...........................................................................page 40

Conclusion générale ............................................................................page 41

Annexes ...............................................................................................page 42

Table des illustrations

Photo page de couverture : La supernova SN 1994D (le point blanc brillant en bas à

gauche de l'image), dans la partie externe du disque de la galaxie spirale NGC4526.

Figure 1 (page 10) : Organisation de l'IPNL page 10

Figure 2 (page 12) : logo SN factory

Figure 3 (page 12) : logo SNAP

Figure 4 (page 15) : Le dispositif expérimental dans son boitier isolant.

.

Figure 5 (page 16) : vue de haut du dispositif expérimental, avec en rouge le détécteur

H1RG.

Figure 6 (page 17) : Schéma du détecteur H1RG.

Figure 7 (page 19) : Exemple de sélection d'une fenêtre de lecture 50x50 pixels sur le

détecteur.

Figure 8 (page 19 ): Flux d'informations circulant vers l'ordinateur après lecture des

pixels.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 5


Figure 9 ( page 21) : Logiciel d'analyse des données du détecteur.

Figure 10 (page 22) : Panneau de réglage des paramètres de lecture avant le lancement

du test.

Figure 11 (page 24) : Spectre d'une supernovae.

Figure 12 (page 25) : Schéma de principe du système d'observation des supernovae dans

le satellite.

Figure13 (page 30): Différence de pixels entre deux frames consécutives dans

readFrame.c.

Figure14 (page 32) : Différence de pixels entre deux paquets de frames dans

readFrame_pack.c pour le calcul du bruit 2.

Figure15 (page 34) : Fonctionnement du programme readFrame_pack.c pour le calcul du

bruit 2.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 6


Résumé

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 7


Préambule

L'identification de la nature de « l'énergie noire » semble être la clé pour mieux

connaître l'histoire de l'expansion de l'univers. C'est cet objectif que se sont fixés les

chercheurs de l'équipe Supernovae de L'Institut de Physique Nucléaire de Lyon. Pour

cela, en collaboration internationales avec d'autres équipes de recherche, ils vont étudier,

à l'aide d'un télescope satellite, les rayonnement infrarouges émis par des supernovae

très lointaines.

C'est à l'aide d'un détecteur de haute précision, le H1RG, que ce rayonnement

infrarouge sera capté. Ce détecteur fait en ce moment l'objet d'une phase de tests et

d'analyse en laboratoires. Il est très sensible au bruit car les flux infrarouges qu'il analyse

sont très faibles. C'est au sein de cette phase d'examen sur le bruit issu de ce détecteur

que mon stage prend forme. Ma mission consista à l'élaboration de programmes

informatiques, permettant la mesure de ce bruit, et à l'analyse des résultats de ces

programmes.

Je vais d'abord effectuer une présentation de l'I.P.N.L pour ensuite développer

l'aspect technique de mon travail en présentant le dispositif expérimental puis en

expliquant les programmes que j'ai modifié et à la fin faire une présentation de quelques

résultats obtenus.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 8


Partie 1 : L'I.P.N.L :

J'ai effectué mon stage de fin de DUT à l'Institut de Physique Nucléaire de Lyon. Je

vais faire ici la présentation de cet institut.

A) L'I.P.N.L

L'Institut de Physique Nucléaire de Lyon (IPNL) est une Unité Mixte de Recherche

(UMR 5822) agissant sous la double tutelle de l’Université Claude Bernard de Lyon et de

l’Institut National de Physique Nucléaire et de Physique des Particules (IN2P3) du CNRS 1 .

Le personnel de l’IPNL est composé de près de 200 personnes : 70 chercheurs et

enseignants-chercheurs, 75 ingénieurs, techniciens et administratifs, 35 doctorants et

postdoctorants et une vingtaine de personnes en accueil temporaire. l’IPNL est la plus

grosse UMR de Lyon 1, bien ancrée dans le tissu universitaire lyonnais, avec un budget

hors salaire de l’ordre de 2 Millions d'euros.

Les chercheurs de l’Institut sont impliqués dans de grandes collaborations

nationales et internationales. Les activités de l’IPNL visent à étudier les propriétés des

composants subatomiques de la matière ainsi que leurs interactions. Laboratoire

essentiellement de physique expérimentale, l'IPNL suit des programmes de recherche

fondamentale dans les domaines de la physique nucléaire, de la physique des hautes

énergies (physique des particules, astroparticules, cosmologie), des interactions particules

matière et des développements technologiques sur les détecteurs.

L’IPNL travaille en lien étroit avec l’Université, l’ENS Science de Lyon et les IUT. Aude

des enseignements académiques dispensés non seulement par ses professeurs et

maîtres de conférence, mais aussi par ses chercheurs et ses ingénieurs intervenant dans

des cycles de formation permanente, l’Institut participe à la formation par la recherche en

encadrant une trentaine de doctorants et en accueillant de nombreux stagiaires.

Donnons quelques exemples de savoir faire acquis à l'IPNL:

• étude du confinement des déchets radioactifs

• imagerie bio-médicale, senseurs silicium à micro-pixels

• préparation avec les médecins rhônalpins d’un centre de hadronthérapie pour le

traitement des tumeurs cancéreuses par ions carbone

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 9


Il y a 6 principaux groupes de recherche à l'institut :

• Quarks et leptons

• Matière hadronique et nucléaire

• Physique théorique

• Activités transdiciplinaires

• R & D Détecteurs

• Astro-particules/neutrinos

Fig.1 Organisation de l'IPNL

Je vais présenter l'équipe Astroparticules/neutrinos, car c'est dans cette équipe de

recherche que j'ai effectué mon stage.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 10


B) Le groupe Astro-particules/neutrinos

a) présentation

Domaine en émergence, les astroparticules se situent aux frontières de la physique

de l'infiniment petit, de l'astrophysique et de la cosmologie. La cosmologie permet de

confronter les théories de l'infiniment petit à l'univers primordial. Le domaine des astroparticules

associe étroitement l’étude de la genèse, de la forme (dimensions, géométrie),

de l’évolution (contenu en matière et énergie) et des points singuliers (sites d’accélération

de particules) de l’Univers aux connaissances sur la structure de ses constituants

(particules élémentaires, champs d’interaction, cordes).

Toute nouvelle découverte en physique des particules à une incidence immédiate

sur la compréhension de l’Univers.

Les rayons cosmiques ont constitué la principale source d'information pour

progresser dans la connaissance de la structure intime de la matière et des lois qui la

gouvernent. Puis, les accélérateurs ont permis des progrès formidables en raison de la

variété, de l'intensité et de la nature des faisceaux produits. Aujourd'hui, un retour s'opère

vers l'étude des rayons cosmiques car, grâce à la construction de nouveaux détecteurs, il

est possible d'accéder à des énergies encore plus élevées que celle fournies par les

accélérateurs.

Dans le Groupe Astro-particules/neutrinos, plusieurs pistes de recherches sont en

cours, amenant à un grand groupe d'équipes internes et d'expériences différentes,

réalisées en partenariat avec d'autres laboratoires à l'échelle nationale et internationale:

• Les équipes CAT, Céleste, Hess, Auger tenteront de trouver d'où nous proviennent

les rayons cosmiques.

• Avec le détecteurs sous-marins Antarès et l'expérience Opéra, les chercheurs

tenteront d'identifier avec plus de précision, les neutrinos: ces particules non

chargées et de masse infinitésimale ou même peut-être nulle, susceptible de

traverser la Terre entière sans inter-agir avec la matière.

• L'expérience Virgo tentera de détecter les ondes gravitationnelles, ces ondes dont

Einstein avait prédit l'existence dans sa théorie de la relativité générale.

• Certaines expériences embarqueront à bord de satellites : Planck hébergera une

expérience de mesure du rayonnement de fond cosmologique, AMS est un

spéctromètre qui tentera de mettre en évidence l'existence d'antimatière dans

l'espace, Glast et Hess s'intéresseront aux rayons cosmiques.

• Les équipes Eros, Agape, Edelweiss et Supernovae tenteront d'identifier la

composition de l'univers, dont 90% de la matière n'est pas visible. L'étude de la

matière sombre pour l'équipe Edelweiss, et l'étude de l'énergie sombre pour

l'équipe Supernovae. C'est justement au sein de l'équipe Supernovae que mon

stage trouve sa place.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 11


) le groupe supernovae.

Cette équipe comprend 4 Physiciens et un Doctorant dans le groupe de l'IPNL.

Les membres permanents du groupe SNOVAE sont Patrique Nedelec, chef

d'équipe, secondé par Yannick Copin, Gérard Smadja et Emmanuel Gangler.

L’équipe est essentiellement impliquée dans deux projets portant sur l’utilisation

cosmologique des supernovae (SNe) Ia :

• le projet Nearby Supernova Factory visant à étudier un échantillon représentatif de

supernovae thermonucléaires proches (0,03


Partie 2 : Partie technique :

Introduction

L'équipe Supernovae/SNAP veut analyser avec un télescope embarqué sur un

satellite le spectre de rayonnement de supernovae très lointaines pour analyser

l'expansion de l'univers. Le flux de photons que ces étoiles qui explosent nous envoient

est très faible, le détecteur qui les observe est donc très précis et du coup très sensible

aux bruits. C'est dans le but d'analyser les différents bruits (bruit de mesure et bruit

statistique) issus de ce détecteur que mon stage trouve sa place. Le rayonnement issu de

la supernovae qui arrive vers la terre se situe dans les infra-rouge, ce détecteur est donc

un détecteur infra-rouge. J'ai travaillé pendant la phase d'essais et de tests de ce

détecteur en laboratoire.

Mon travail est lié à l'observation d'objets célestes : les Supernovae.

Qu'est-ce qu'une Supernovae?

Une supernovae est l'ensemble des phénomènes directement issus de l'explosion

d'une étoile, qui s'accompagne d'une augmentation brève mais fantastiquement grande de

sa luminosité qui permet de la voir à de très grandes distances (8x109 années lumière).

Vue depuis la terre, une supernova apparaît donc souvent comme une étoile nouvelle

(d'où son nom: nova = nouvelle), alors qu'elle correspond en réalité à la mort d'une étoile.

Elles jouent un rôle essentiel dans l'histoire de l'univers, car c'est lors de son explosion en

supernova que l'étoile libère les éléments chimiques qu'elle a synthétisés au cours de son

existence et dont certains sont synthétisés lors de l'explosion elle-même, pour être

diffusés dans le milieu interstellaire. Historiquement, les supernovae ont été classifiées en

fonction de leur spectre, suivant deux types, notées par les chiffres romains I et II, lesquels

contiennent plusieurs sous-types :



Les supernovae de type I ont un spectre qui ne contient pas d'hydrogène

Les supernovae de type II ont un spectre qui contient de l'hydrogène.

Parmi les supernovae de type I, on distingue trois sous-classes :


Si le spectre montre la présence de silicium, on parle de type Ia


Si le spectre ne montre pas la présence de silicium, on regarde l'abondance

d'hélium:

• En présence d'une quantité notable d'hélium, on parle de type Ib

• En présence de faible quantité d'hélium, on parle de type Ic

Les chercheurs du groupe Supernovae/Snap observent essentiellement les

supernovae de type Ia (SNIA). Les supernova de type Ia résultent de l'explosion

thermonucléaire d'une naine blanche 3 suite à une accrétion 4 de matière arrachée à une

étoile voisine (voire une collision avec celle-ci) qui explose complètement. Seul 2% de

l'énergie développée dans cette explosion est traduite en énergie lumineuse. Cette

énergie lumineuse est gigantesque et équivalente à celle développée par une galaxie tout

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 13


entière, soit des milliards de soleils comme le nôtre, réunis en un seul point. Le

phénomène ne dure que quelques jours. C'est pendant ces quelques jours que la

supernova sera observée et son spectre electromagnétique 5 analysé par les chercheurs.

Quel est l'objectif du groupe Supernovae?

Les supernovae thermonucléaires (dites de type Ia) semblent être de remarquables

chandelles standard à portée cosmologique. Si ce caractère est confirmé, leur étude

permettra de contraindre rigoureusement les paramètres cosmologiques décrivant la

composition et la géométrie de l’Univers, et en particulier de sonder la nature de la

mystérieuse « énergie noire ». Avec cette expérience nous serons capables de mieux

définir l'histoire de l'expansion de l'univers.

Les recherches sur lesquelles je travaille s'effectuent sur un cryostat dans lequel se trouve

un détecteur Infra- rouge de haute qualité.

1. Le dispositif expérimental.

A) Le fonctionnement du dispositif.

J'ai travaillé sur un dispositif expérimental avec lequel on fait toutes les mesures

d'essais et tous les travaux de recherche avant son envoi en satellite. Il consiste en un

cryostat dans lequel se trouve un détecteur infrarouge. Ce détecteur est placé à l'intérieur

d'un écran thermique, qui a pour but, d'une part d'isoler le détecteur thermiquement, et de

le protéger des rayonnements provenant de l'extérieur d'autre part. Ce dispositif est

refroidi à l'azote liquide, pour supprimer tous les rayonnements infrarouges dûs à la

température du milieu ambiant. Le refroidissement prend du temps (environ 48h) car si on

refroidit le détecteur trop rapidement, il se casse. Tous les éléments du dispositif, sous

l'écran thermique, ne sont pas à la même température. L'ensemble miroir plaque-froide

écran thermique est à une température d'environ 79-82 K. le détecteur est refroidi en

moyenne à 108 K . On crée le vide avec une pompe autour du détecteur pour l'isolation.

Sur la figure suivante, nous pouvons voir l'aspect en 3 dimensions du dispositif

dans sa globalité. Tout est sous vide, le refroidissement se fait par conduction à partir de

la plaque froide dans laquelle passe le fluide cryogénique (ici de l'azote liquide) :

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 14


Détecteur H1RG

Plaque froide

Miroir

Ecran

thermique

Fig.4 : Le dispositif expérimental dans son boitier isolant.

Sur le bord de la carte hexagonale, on a placé des LEDs et des photo-diodes. Les

LEDs vont servir à simuler les étoiles. C'est leur rayonnement que l'on va analyser. Les

photo-diodes sont là pour pouvoir comparer les résultats du détecteur à quelque chose de

connu. Connaissant les caractéristiques de la photo diode, on va pouvoir, à partir du

courant la traversant, déterminer le flux photonique incident. Pendant les essais, les LEDs

sont alimentées à des intensités différentes afin d'observer le comportement du détecteur

sur une large gamme de flux. L'éclairage par des LEDs différentes permet l'analyse du

comportement à différentes longueurs d'ondes. Le rayonnement qu'elles émettent est

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 15


éfléchi sur un miroir situé au fond de l'écran thermique. Ce rayonnement arrive ensuite

sur le détecteur et sur les photo-diodes.

Détecteur H1RG

Fig.5 : vue de haut du dispositif expérimental, avec en rouge le détécteur H1RG.

B) Le détecteur H1RG.

Le rôle de ce détecteur est de transformer le flux de photon qu'il reçoit des étoiles

ou des Leds, en flux d'électrons, pour pouvoir ainsi faire des mesures électriques sur ce

flux d'électrons. Il a une certaine efficacité qu'on utilisera plus tard dans le calcul du bruit.

Le détecteur H1RG est un pavé de 1024x1024 pixels de 18μm x 18μm. Ce détecteur est

composé d'une couche anti-reflet (blanc), d'un substrat transparent (jaune), d'une couche

détectrice structurée en pixels (rose). En dessous de chaque pixel, il y a une électrode

(rose pâle), puis une bille d'indium (jaune mat) et une chaîne de traitement électronique

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 16


(non représentée). Au niveau de chaque pixel, on fait un dopage (bleu) pour canaliser les

électrons à l'endroit de l'électrode. Toutes ces chaînes sont dirigées vers un multiplexeur.

Fig.6 : Schéma du détecteur H1RG.

Ce détecteur à été fabriqué par l'entreprise américaine Rockwell.

Le détecteur est immédiatement relié à une carte d'acquisition électronique qui lit

les pixels du détecteur d'une manière que je développerai plus tard. Les données issues

de cette lecture sont ensuite envoyées via le réseau Ethernet de l'institut dans la mémoire

du PC de l'opérateur. La lecture du détecteur est supervisée avec un logiciel d'acquisition

type Labview. Avec ce logiciel on peut aussi étudier les différentes données de lectures

grâce à une interface graphique. Ces données de lectures peuvent être aussi traitées par

3 logiciels au choix en langage C que j'ai modifié et corrigé en fonction de ce que l'on

voulait calculer : readFrame.c, readFrame_Pack.c ou readFrame_burst.c . Tout ce

dispositif est refroidi car on observe un rayonnement infra-rouge. Si on ne refroidit pas le

système, ils serait saturé par le rayonnement infrarouge ambiant dans l'atmosphère.

C) Lecture du détecteur et description des tests.

Au cours de mon stage, j'ai corrigé des programmes qui utilisent les donnés de

lecture du détecteur et j'ai aussi effectué toute une gamme de tests (ou mesures) avec ce

détecteur, en modifiant à chaque fois les paramètres pour avoir tout un panel de

configurations à étudier. Il était donc indispensable que je comprenne comment le

détecteur était lu et comment les tests s'effectuaient.

La carte hexagonale sur laquelle sont fixés les LEDs, les photo diodes et

l'ensemble détecteur+multiplexeur est reliée à un ordinateur. Sur cet ordinateur, une

interface réalisée à l'aide du logiciel LABVIEW permet de configurer tous les paramètres

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 17


de l'essai, sauf le courant dans les LEDs. En effet, celles-ci sont alimentées par un

générateur de courant afin de fixer le flux qu'elles émettent. Dans cet interface, on peut

choisir :

• le nombre de frames :

une frame est un cliché du détecteur : un header + une lecture de chaque pixel

les uns à la suite des autres sans interruption.

• le nombre de burst

un burst est un paquet de frames (c'est donc un paquet de clichés pris les uns à

la suite des autres sans interruption)

• le burst delay

le burst delay correspond à la durée entre deux burst consécutifs (c'est un

temps de retard entre chaque burst).

• le paramètre FIFO_PAE

Ce paramètre correspond au nombre de frames que l'on prend en compte dans

la lecture.

• le paramètre FIFO_PAF

il correspond au nombre de frames que l'on jette (que l'on ne prend pas en

compte dans la lecture)

• Les paramètres : window_start_row, window_start_pixel, window_stop_pixel,et

window_stop_row servent à régler la fenêtre de lecture du détecteur car nous ne

lisons pas tous ses pixels (1024 x 1024 pixels) mais nous sélectionnons une fenêtre

( 50 x 50 par exemple) au centre de celui-ci (voir schéma ci-dessous).

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 18


Fig .7 : Exemple de sélection d'une fenêtre de lecture 50x50 pixels sur le détecteur

Fig.8 : Flux d'informations circulant vers l'ordinateur après lecture des pixels.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 19


Sur le schéma précédent, nous pouvons voir que les pixels du détecteur sont lus de

manière répétée. Ces « clichés » ou frames (en rouge) sont regroupés en burst ou

« paquets » de frames. Ces burst sont séparés les uns des autres dans le temps par le

burst_delay. Contrairement au schéma, il n'y a pas de delay ou de temps de retard entre

chaque frame. Il est nécessaire de prendre plusieurs « clichés » du détecteur à la suite car

nous voulons justement répéter la même mesure un grand nombre de fois (jusqu'à 125

frames/burst) pour gagner en précision dans la détermination de la moyenne de ces

mesures. Le burst delay est le moyen trouvé par l'équipe Supernovae pour régler la durée

totale de lecture: en mettant plus ou moins de burst delay, on règle le temps de lecture

plus ou moins long.

Une fois que tout a été réglé, l'utilisateur lance le test. Les données du détecteur

sont conservées dans un fichier. Le contenu de ce fichier est affiché dans une fenêtre

LABVIEW, à l'intérieur de laquelle on peut observer plusieurs courbes. Tout d'abord, la

courbe du signal brut, celle de la référence et celle de la différence entre les deux en

fonction du temps, et ce, pour tous les pixels. La référence est un pixel non illuminé qui est

lu en même temps que ceux du détecteur. Cela permet de soustraire les bruits de mode

commun (fluctuations de tensions communes à l'ensemble du détecteur). En effet, une

carte, représentant toute la zone sélectionnée, nous permet de déplacer un curseur afin

de visualiser chacune des courbes pour un pixel voulu.

Pendant toute une phase de mon stage, j'ai pris des mesures avec ce système. Il

m'a été demandé de prendre un grand nombre de mesures car nous voulions en avoir

beaucoup avec chacune des paramétres de lecture différents. Dans certains des tests

précédents, 1 frames sur 10 dans la mesures était mémorisé et prise en compte dans le

calcul du bruit. Pour améliorer la précision, il fallait prendre un compte un paquet de

mesures consécutives (sans delay) pour avoir presque la même mesures prise un grand

nombre de fois pour que sa moyenne soit très précise. Dans les nouveaux tests que j'ai

pris, nous avons donc pris en compte toutes les frames d'un burst, mais nous rejetons des

burst (1 / 10 par exemple ). Nous faisons aussi des mesures sur des longues périodes

jusqu'à 12 s de burst_delay (durée total : 2000s à 3000s). Il y a des mesures avec ou sans

éclairage du détecteur avec les diodes pour avoir là aussi différentes conditions de test.

Durant les tests, on a dû faire face à plusieurs problèmes , principalement un

problème d'erreur de séquencement sans doute dû à un manque de rapidité de la part du

Pc pour assimiler toutes les données envoyées par la carte de lecture du détecteur. Suite

à une erreur de séquencement (signalé par le logiciel) on est obligé de relancer des

mesures courtes pour « roder » le détecteur pour qu'il nous envoie des données utilisables

dans les tests suivants plus longs. Un autre problème auquel on a dû faire face est le laps

de temps qu'on laisse sans le vouloir entre deux tests, ce laps de temps « refroidit » le

détecteur et ne permet pas des mesures parfaites dans le test suivant : il fallait donc se

dépêcher et guetter la fin de chaque test.

Dans la figure suivante (page suivante) nous voyons le logiciel d 'analyse des données de

lecture du détecteur :

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 20


Histogramme de la

différence entre 2 frames

consécutives pour le pixel

choisi

Choix d'un pixel sur la carte

selectionnée

Contenu numérisé du pixel choisi

(blanc) en fonction du temps avec,

en rouge, le pixel reférence

Contenu numérisé du pixel choisi

moins le pixel de référence. (echelle

dilatée sur cette figure)

Fig.9 : Logiciel d'analyse des données du détecteur.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 21


Fig.10 : Panneau de réglage des paramètres de lecture avant le lancement du test.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 22


2. le bruit

A) Présentation

Le but de la manipulation est d'utiliser les données de lecture du détecteur prises

dans différentes conditions pour pouvoir connaître le bruit et ainsi optimiser le mode de

fonctionnement de ce détecteur. L'objectif final de cette manipulation est de trouver le bon

compromis entre obtenir un signal sans trop de bruit et un flux d'informations limitées entre

la terre et le satellite car plus on envoie d'informations, plus c'est cher ou impossible! (le

temps d'envoi d'information du satellite vers la terre est très limité). Le problème est que si

l'on veut limiter le flux d'informations, on diminue le nombre de lectures ( donc de frames

et de burst) et on augmente ainsi le bruit. Nous ne sommes ici qu'à la première phase de

recherche sur le bruit pour mieux le connaître.

a) Bruit de lecture et bruit de Poisson

Au cours de la deuxième année de GEII, dans le module optionnel d'électronique,

nous avons consacré tout un chapitre sur le bruit dans un système. Nous avons vu que

dans n'importe quel système physique, dès que nous faisons des mesures sur ce

système, nous n'obtenons jamais une valeur exacte et constante dans le temps. Nous

observons toujours un « bruit » qui consiste en de petites fluctuations de la mesure autour

d'une valeur moyenne en raison de l'imperfection du matériel utilisé et parfois aussi des

fluctuations statistiques des systèmes étudiés. Dans beaucoup de systèmes, le bruit peut

être négligé car ces fluctuations sont minimes à côté des valeurs recherchées. Ici, Les

Supernovae observées se situent à des distances très lointaines. Le flux de photons qui

en provient est donc très faible. Ainsi les mesures issues du détecteur sont très sensibles

au bruit car il est du même ordre de grandeur et même parfois supérieur au flux

photonique mesuré. Donc ici, il ne faut SURTOUT pas négliger le bruit, au contraire, il faut

l'étudier, pour pouvoir ensuite le prendre en compte de manière précise dans les mesures.

A l'IUT, nous avions surtout étudié le bruit fréquentiel ( bruit blanc, bruit rose par

exemple ). Ici, nous devons prendre en compte deux bruits différents:



Le bruit de mesures : (ou bruit de lecture) issu des erreurs de mesures à cause

du matériel utilisé. En effet nous ne pouvons pas utiliser un matériel parfait, sans

erreur. Ici le bruit de mesures est dominé par les erreurs du détecteur, qui ne donne

pas une tension fixe en fonction du flux de photons qu'il reçoit. Et aussi, une partie

(plus petite) du bruit de mesure est issu de la carte électronique et du matériel de

mesure. C'est le bruit observé à signal nul (diodes éteintes)

Le bruit statistiques : issu de la fluctuation du flux de photons arrivant sur le

détecteur. En effet le flux de photons ( ~ 1e/s) émis depuis les Supernovae (ou émis

des leds dans le cas de l'expérience en laboratoire) n'est pas fixe, il fluctue autour

d'une valeur moyenne. Ces fluctuations suivent une loi statistique bien connue : la

loi de Poisson. C'est ce que nous appellerons, le bruit de Poisson. Il est important

car dans cette expérience, nous cumulons les lectures issues du détecteur. C'est le

bruit qui domine quand nous éclairons le détecteur avec les diodes infra-rouge.

Le bruit Total est la somme du bruit de mesure et du bruit de Poisson.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 23


) Pourquoi le bruit est-il si important ?

En explosant, une supernova émet un rayonnement electro-magnétique dont le

spectre ressemble à celui-ci :

Fig.11 Spectre d'une supernovae observé depuis la terre

Une bande spectrale typique pour l'étude de ces supernovae « proches », est la bande qui

va de 4000 à 5000 A (ici en grise) avec 1A = 10 -8 cm.

Du fait de l'expansion de l'univers, la supernova s'éloigne de nous, le rayonnement

éléctro-magnétique observé, subit un effet Doppler : les fréquences de ce rayonnement

sont multipliées par un facteur (z+1) avec z variant de 0.5 à 1.7 pour Z = √ (1+v/c) / (1-v/c)

= v/c quand v


Chaque pixel du détecteur couvre 100 A de cette bande, ce qui équivaut à un flux

de 1 electron par seconde se répartissant sur 23 pixels en tout (car 100x23=2300).

Donc sur chaque pixel, on à un flux équivalent à 1/23 = 0.042 e/pix/s

J'illustre mon explication avec le schéma (imagé) suivant :

Effet Doppler

Miroir

téléscope

Supernova

Camera

Flux de 3 photons / sec sur une

bande spéctrale de 2300 A

Prisme : dispersion de la

lumière en fonction de la

longueur d'onde

Colimateur

Flux sur chacun des pixels : 3/23 photons/pix/s

23 Pixels du détecteur

couvrant 100 A

La capacité du détecteur étant d'environ 1/3 , on a un

signal de 1/23 = 0.042electrons /pix/sec sur chaque

pixel

Fig.12 : schéma de principe du système d'observation des supernovae dans le satellite.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 25


Pour avoir un signal significatif, il sera nécessaire d'avoir une durée d'exposition

totale de plusieurs milliers de seconde (jusqu'à 7h). Ces 7h sont décomposées en poses

de 2000 à 3000s pour minimiser le bruit de lecture (11e/frames mesurés). On attend donc

un signal supernovae de 0.042 * 3000 = 120e . On a donc au pire une erreur de 11e/120e

si on ne vient lire le détecteur qu'une seul fois (une pose de une « frame »).

B) Calcul sur le bruit de Poisson :

le bruit de Poisson est dû à la fluctuation statistique du nombre d'électrons arrivant

jusqu'au détécteur. Il est important car nous cumulons les valeurs : à chaque nouvelle

mesure, nous ajoutons toutes les mesures précédentes. nous pouvons calculer ce bruit

en fonction du flux d'électrons moyen arrivant sur le détecteur que l'on a mesuré.

La fluctuation suit la loi de Poisson, effectuons un rappel sur cette loi :

sur une période T, un événement arrive en moyenne λ fois. On appelle X la variable

aléatoire déterminant le nombre de fois où l'événement se produit dans la période T. X

prend des valeurs entières : 0, 1, 2, ...

Cette variable aléatoire suit une loi de probabilité définie par :

pour tout entier naturel k

Les caractéristiques de cette loi de Poisson sont les suivantes :

L'espérance d'une loi de Poisson est λ.

La variance d'une loi de Poisson est λ.

Son écart type est donc :

A un intervalle de temps fixe T, nous mesurons sur le détecteur un signal dont l'expression

mathématique est la suivante:

au temps T1 = Signal S1

T2 = S1 + Δ2 (fluctuation à l'instant T2)

T3 = S1 + Δ2 + Δ3

....

au final : Tp = S1+ Δ2 + Δ3 + ... +Δp

Nous prendrons ici P=30 soit des paquets de 30 mesures ou 30 frames.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 26


Nous cumulons les mesures, donc au final, nous avons sur un paquet de mesures un

signal S valant :

S = pS1 + (p-1)Δ 2+ (p-2) Δ3+ ...+ Δp

imaginons un autre paquet de mesures S' avec

S' = p S11 + (p-1)Δ12+ (p-2) Δ13+ ...+ Δp+30

La caractéristique du calcul de ce bruit est que nous faisons ici une différence entre ces

deux paquets de mesures. Nous pouvons choisir suivant les programmes entre faire une

différence entre deux paquets consécutifs, ou entres deux paquets séparés dans le temps.

Notons que ΔX = Δmoy + δX avec Δmoy la valeur moyenne de la fluctuation de Poisson et

δX la vraie fluctuation de Poisson.

En théorie nous avons donc la différence S-S' avec :

S – S' = pΔ11 + Δ2 + 2Δ3+ .. + Δp(p-1) + (p-1)Δ12 + (p-2)Δ13 + .. + Δp+30

Nous pouvons calculer la fluctuation δ de la différence S-S' :

Nous obtenons :

δ(S – S') = pδ11 + δ2 + 2δ3 + .. + (p-1)δp + (p-1)δ12 + (p-2)δ13 + .. + δp+10

la fluctuation carré est :

δ 2 (S – S') = pδ 2 11 + δ 2 2 + 4δ 2 3 + .. + (p-1) 2 δ 2 p + (p-1) 2 δ 2 12 + (p-2) 2 δ 2 13 + .. + δ 2 p+10

car : tous les facteurs δiδj avec i différent de j sont nuls (règles statistiques).

Prenons la moyenne de cette fluctuation :

on a : < δ 2 11 > = < δ 2 2 > = < δ 2 3 > = ... = < δ 2 p > = ... = < δ 2 p+10 > = δ 2 X

soit : < δ 2 (S – S') > = δ 2 X + 2 δ 2 X ( (p-1)2 + (p-2)2 + ... + 1)

on a : ( (p-1) 2 + (p-2) 2 + ... + 1 ) = ( (p-1)(2p-1)p ) / 6

nous avons donc la formule de la part de bruit de Poisson dans le bruit total :

Bp = Bruit de Poisson =

On a, sur la mesure du Mercredi 13 Février ( Diodes allumées) : δ 2 X = 900 électrons. C'est

le flux moyen. Ce flux moyen dépend directement de l'intensité envoyée dans la Diode :

1,5 μA

Pour p = 30 (paquets de 30 frames), on trouve Bp =

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 27


Ce bruit de Poisson calculé est raisonnablement proche du résultat du programme

readFrame.c sur la même mesure.

3. Réalisation des programmes et résultats.

Avons-nous plus intérêt à prendre un burst delay long ou court? De quelle manière

devons-nous moyenner nos mesures pour avoir le moins de bruit possible? A-t-on moins

de bruit quand nous prenons peu de mesures sur une longue période ou alors beaucoup

de mesures sur de petites périodes répétées? C'est pour répondre à toutes ces questions

que nous travaillons sur des programmes informatiques servant à mesurer le bruit sur les

données de lecture du détecteur.

A) Les Programmes en C :

Les programmes servent à mesurer le bruit en fonction des données de lecture

envoyées par le détecteur. Les résultats des programmes ne font pas la part entre le bruit

de mesure et le bruit de Poisson, ils mesurent juste le bruit total avec les données de

lecture qu'on leurs indique. On fait tourner ces programmes sur les données de beaucoup

de mesures prises avec des conditions différentes. Leurs résultats nous serviront à

comprendre le bruit en fonction des paramètres de lecture de ce détecteur. Ainsi, nous

pourrons plus tard définir un mode de fonctionnement optimal de ce détecteur.

Dès le début de mon stage, j'ai commencé par travailler sur un programme rédigé

en C : readFrame.c, déjà rédigé précédemment par un ingénieur de l'institut. Il m'a fallu

d'abord le comprendre pour ensuite le corriger et ainsi calculer ce que l'on voulait. En effet

ce programme est assez long comparé aux programmes sur lesquels j'avais l'habitude de

travailler à l'IUT (plus de 750 lignes de code avec une centaine de variables). Il contient

surtout des boucles FOR imbriquées les unes dans les autres jusqu'à 5 fois. C'était la

principale difficulté pour moi tout au long de la modification du programme : comprendre la

logique utilisée dans ces boucles imbriquées, comprendre ce qu'il fallait que je modifie, et

enfin essayer de trouver comment faire ces modifications. De plus l'environement sur

lequel j'ai travaillé est GENOME : un systeme d'exploitation basé sur UNIX. Toute les

applications se lancent à partir de commandes bien particulières. J'ai mis un certain temps

à m'adapter et à m'habituer à cette environnement qui n'a rien à voir avec Windows (avec

lequel j'avais plus l'habitude de travailler).

C'est à partir de ce premier programme : readFrame.c, que j'ai rédigé les autres

programmes : readFrame_pack.c et readFrame_burst.c qui servent eux aussi à mesurer

le bruit. J'ai donc travaillé sur trois programmes pour mesurer le bruit, les trois sont

différents et ne calculent pas exactement le bruit de la même manière. Je vais expliquer

chaque programme en essayant de faire ressortir clairement leurs caractéristiques.

Il faut comprendre que le bruit dépend de la manière dont est lu le détecteur (de la

répartition des burst) et de la manière dont on va prendre en compte ces données du

détecteur.

Tout le travail de développement des programmes est controlé par des impressions

en C du type « printf » servant à afficher les valeurs des variables désirées à l'instant que

l'on veut. Ces impressions sont utiles pour voir si les boucles sont bien paramétrées et si

les valeurs des variables sont bien calculées. Par exemple on met en place des boucles

permettant d'afficher toutes les valeurs d'un tableau pour contrôler ces valleurs et pour

contrôler la valeur moyenne qu'on utilise dans la suite du programme. On à fait aussi du

calcul manuel de dispersion à partir d'histogrammes que l'on à fait avant en fonction des

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 28


valeurs imprimées pour des vérifications.

a) Le programme readFrame.c :

Ce programme est basé sur le calcul d'une variance. En effet, parler de bruit, de

dispersion ou de variance est dans ce cas la même chose. Le bruit est la variance (ou

dispersion) des mesures de la différence entre les valeurs d'un pixel sur deux frames

consécutives.

La variance est par définition :

variance 2 = < réponse du systeme 2 > - ( < réponse du sytseme > ) 2

voici le plan du programme :


Initialisation (déclarations de variables, tableaux, structures)

➔ On vient prendre la valeur d'un pixel [ind] sur une frame donnée. zfra[ind]

➔ On peut lui soustraire la valeur du pixel référence lu au même moment que lui.

➔ On fait la différence (dfra) entre la valeur de ce pixel et la valeur de ce même pixel

mais sur la frame précedente (que l'on à mémorisée avant). C'est sur cette

différence qu'on mesure la variation de la valeur du pixel.

➔ On vient remplir deux tableaux avec des sommes :

➢ Som1 : c'est la somme de toutes les différences dfra calculées précédement

➢ Som2 = c'est la somme de toutes les différences aux carré (nous avons ainsi

deux tableaux avec les valeurs des som1 et som2 pour chaque pixel de chaque

frame).

Ces opérations sont réalisées en boucle pour tous les pixels et sur un paquet de 10

frames. Quand nous sommes arrivés à la frame numéro 10 (au bout de un burst de 10

frames) :


Avec la formule de la variance, on vient faire le calcul du bruit (enoise [ind]) sur

chaque pixel (en utilisant som1 et som2) :

Pour mesurer le bruit. Nous appliquons donc le calcul suivant :

Variance 2 = ( 1/N ∑(Z(i) – Z(i-1) ) 2 2

) – ( 1/N ∑ ( Z(i) – Z(i-1) ) )

avec :

• N : le nombre de frames (dans readFrame.c : le nombre de frames par burst).

• Z(i) : La valeur d'un pixel.

• Z(i-1) : la valeur de ce meme pixel à l'instant précédent.

Cela revient a faire le calcul suivant :

Variance 2 = ( (1/N) * Som1) - ( (1 / (N.N) ) * Som2 )


Nous prenons ensuite la racine de cette variance carré pour avoir la valeur de la

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 29


dispersion.




nous avons ainsi la valeur du bruit sur toutes les frames d'un burst pour chaque

pixel.

nous pouvons moyenner ce bruit sur tous les pixels pour avoir la moyenne du bruit

sur un burst.

Et enfin nous pouvons moyenner ce bruit sur tous les burst, et avoir un bruit général

pour tout le test.

La caractéristique importante de ce programme est que nous faisons une différence

de deux valeurs d'un même pixel sur deux frames consécutives. C'est principalement

cette caractéristique que nous changerons dans les programmes suivants. J'illustre cette

caractéristique avec le schéma suivant :

Fig.13 : Différence de pixels de deux frames consécutives dans readFrame.c

Nous faisons ensuite le calcul de la variance entre les valeurs d-a, g-d, etc. pour avoir la

dispersion sur chaque pixel entre deux frames consécutives.

Il a fallu supprimer la première frame car les valeurs de ces pixels étaientinsignifiantes par

rapport aux frames suivants.

Je vais mettre des exemples de lignes de code que je considère importantes et tenter de

les expliquer.

la boucle de balayage du détécteur :

for(jj=startRowima; jj


* printf ("i ,ii, jj, j %d,%d,%d,%d\n",i,ii,jj,j); */

ind = i+dimxima*j;

zfra[ind][1] = OUT7(frame,ii,jj)-zref[ind][1];

sumfra[ind] = sumfra[ind] + zfra[ind][1];

if(nfra> nfrafirst)

{

dfra[ind] = zfra[ind][1]-zfra[ind][0];

ssfra[ind] = ssfra[ind] + dfra[ind];

ssfra2[ind] = ssfra2[ind] + dfra[ind]*dfra[ind];

}

/* end if */

zfra[ind][0] = zfra[ind][1];

}

}

/* end loop j */

C'est avec cette boucle que l'on vient lire chaque pixel du détecteur. Les compteurs

J sont pour les colonnes et les conteurs i sont pour les lignes. La fonction OUT7 permet

d'indiquer la valeur du pixel numero [ind] que l'on va mettre dans le tableau zfra[ind].

• dfra[ind] permet d'inscrire la différence entre deux mêmes pixels de deux frames

consécutives :

dfra[ind] = zfra[ind][1]-zfra[ind][0]

➢ zfra[ind][1] pour la frame x

➢ zfra[ind][0] pour la frames x-1

• Le tableau ssfra[ind] permet de faire la somme som1

• ssfra2[ind] permet la somme som2

• zfra[ind][0] = zfra[ind][1] permet de mettre les valeurs des pixels de la frame x en

mémoire pour ensuite les soustraire aux pixels de la frame x+1 .

2ème exemple : Le calcul du bruit sur chaque pixel :

for (ind = indfirst; ind0)

{

//printf("i startPixelima %d,%d\n",i,startPixelima);//

mean_noise = mean_noise + sqrt(enoise[ind]);

mean_count = mean_count + 1;

}

//printf("in loop ind mean_count kfrb %d,%f %d\n",ind,mean_count,kfrb);//

sumnoise[kfrb]=sumnoise[kfrb]+sqrt(enoise[ind]);

sumcount[kfrb]=sumcount[kfrb]+1;

//printf("mean_count xnav %f,%f\n",mean_count,xnav);//

/*if((iscan==7)&&(j30))

printf("enoise ind j xnav ssfra2 ssfra %d,%d,%5.2f,%5.2f,%5.2f\n",

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 31


}

ind,j,xnav,ssfra2[ind],ssfra[ind]);*/

enoise[ind] = sqrt(enoise[ind]);

ssfra[ind] = ssfra[ind]/xnav;

sumfra[ind] = sumfra[ind]/xnav;

/*printf("ind enoise %d,%3.2f\n",ind,enoise[ind]);*/

Dans cette boucle, nous calculons le bruit (enoise[ind]) pour chaque pixel :

enoise[ind] avec la formule de la variance que j'ai expliquée dans le paragraphe

précédent. C'est ici que les sommes ssfra[ind] et ssfra2[ind] calculées plus haut dans le

programme rentrent en jeu.

Avec ce programme, on ne calcule que la variance des différences entre deux

frames consécutives : si on fait un histogramme des différences obtenues sur un pixel

comme sur la figure ci dessus, on obtient une gaussienne large ( variance = dispertion =

bruit important) .

b) Le programme readFrame_pack.c :

J'ai écrit le programme readFrame_pack.c en partant du programme readFrame.c.

Cependant, Il y a beaucoup de différences avec le précédent.

Une différence essentielle dans ce programme est que, au lieu de faire la différence des

valeurs d'un même pixel entre deux frames consécutives, on la fait entre des valeurs

éloignées de plusieurs frames. On fait donc des paquets de frames, dans lesquels on

rentre des valeurs de pixels, et on leur retranche les valeurs des mêmes pixels du paquet

précédent (voir le schéma suivant) :

Fig.14 : Différence de pixels de deux paquets de frames dans readFrame_pack.c

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 32


Faire les différences de pixels sur des paquets de frames non consécutifs mais éloignés

dans le temps est une condition imposée par Mr Smadja car dans ce cas nous sommes

plus proches de la méthode qui sera utilisée lors des vraies mesures sur les supernovae.

En effet lors des tests réels, les mesures seront éloignées dans le temps : réparties en

paquets sur 3000 sec ( plus tard, nous ferons évoluer le programme pour analyser la

réponse en faisant la différence de paquets non consécutifs mais séparés de plusieurs

paquets )

Ce changement par rapport au programme précédent amène beaucoup d'autres

modifications tout au long du code du programme. Il a fallu redéfinir beaucoup de

variables supplémentaires et modifier les paramétrages de pratiquement chaque boucle

FOR. Mettre en place une logique pour définir des paquets de frames, et pour mettre en

mémoire, au bon moment, les valeurs des pixels pour la soustraction suivante.

De plus, dans readframe_pack.c, nous ne faisons pas le calcul du bruit de la même

manière que dans le programme précédent. Au lieu de calculer seulement la variance des

différences (dfra) de chaque pixel, on viens calculer la valeurs moyenne des différences

(dfra) de chaque paquet et on vient calculer ensuite la variance de ces moyennes

(comme sur le schéma ci dessous, c'est le bruit 2). Ainsi, on gagne en précision dans la

détermination du bruit. On fait aussi un calcul du bruit à l'intérieur de chaque paquet (

calcul directe de la variance des différences de deux paquets de frames, à la manière du

premier programme readFrame.c, c'est le bruit 1) pour comparer ensuite les deux valeurs

trouvées.

On vient donc calculer deux bruits :

• Sum_total (nom de la variable dans le programme ) = bruit 1 dans l'explication.

• Sum_total_average = bruit 2 dans l'explication.

J'explique le premier calcul de ce programme par le schéma suivant :

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 33


5, 6, 7..

Et Variance Et Variance Et Variance Et Variance

pour le bruit 1 pour le bruit 1 pour le bruit 1

des moyennes

Fig.15 fonctionnement du programme readFrame_pack.c pour le calcul du bruit 2

Exemple de ligne de code du programme readFrame_pack.c :

if((ifrb==(npack-1))&&(kfrb==0))

{

for(j=startRowima; j


il est intéressant de comparer le résultat du bruit obtenu en fonction du nombre de frames

que l'on met par paquet : 10, 20, 30, 40, 50 ... frames /paquet. Je reserve une partie sur

l'analyse des resultats et les conclusions techniques plus loin dans ce rapport.

Les programmes read_frames et readFrames_pack on été utilisés avec des données de

mesures prises en Février où pour des raisons de mémoires on ne prenait en compte que

1 frame sur 10 avec 10 frames par burst (soit 1 frame / burst ). Donc, les paquets de

frames dans readFrame_pack était des frames n'appartenant parfois pas au même burst.

Nous avons voulu changer ce « défaut » pour être plus précis : nous avons donc fait

readFrame_burst.c

c) Le programme readFrame_burst.c

Le programme readFrame_burst.c à été developpé sur la base de

readFrame_pack. Il est très similaire à ce dernier. On a voulu modifier readFrame_pack.c

car il n'était pas astucieux de faire des paquets de frames artificiels sans prendre en

compte les burst. On a voulu prendre toutes les frames d'un burst dans un paquet.

Maintenant, les paquets sont les bursts. Nous avons ainsi des paquets de mesures prises

pratiquement instantanément (dans un burst) ce qui est, pour le calcul du bruit, plus précis

que des paquets de frames parfois séparés par un burst delay. De plus ce programme a

été developpé suite à une série de tests nouveaux sur le détecteur pris dans des

conditions différentes où on s'est rendu compte que les cinq à dix premiers frames de

chaque burst étaient perturbées. Il a donc été nécessaire de ne pas les prendre en compte

dans le calcul du bruit (donc de modifier le programme en conséquence).

Sur chaque programmes, nous pouvons choisir de soustraire ou non à la valeur d'un pixel

non illuminé : le pixel de référence lu au même instant (sur une sortie différente) que lui.

Cette soustraction du pixel de référence joue de manière significative sur le bruit, avec un

effet pas toujours positif selon les résultats.

Comprendre le détail de chaque programme à été pour moi l'une des principales

difficultés. Ces différentes méthode de calcul du bruit ce retrouvent de manière très

subtile dans le Code C des programmes.

B) Analyse des résultats obtenus :

La majeure partie de mon travail durant mon stage consista à la mise en oeuvre

des programmes servant à calculer le bruit, afin d'obtenir des résultats cohérents. Ce

travail occupa la majeure partie de mon temps. La série de mesures nouvelles que j'ai

prises occupa aussi une certaine partie de mon stage. Le travail d'analyse des nouveaux

résultats des programmes et des nouvelles mesures eut donc une proportion mineure.

Cette partie est resérvée à ce travail d'analyse. Les résultat obtenus sur le bruit dépendent

de beaucoup de paramètres et les mesures sont très nombreuses, il est donc difficil de

faire la présentation de tous les résultats sur chaque mesure. De plus, je ne présenterai

pas les résultats du bruit sur les dernières mesures car elle ne sont analysables qu'avec

readFrame_burst.c et les résultats ne sont pas encore compris : on pense à des

problèmes de réglage du détecteur (courant de fuites, instabilité des alimentations,..) ou

bien à un problèmes dans le code du programme. Je présenterai donc les résultats les

plus caractéristiques.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 35


ésultats de la mesure du jeudi 14 Février 2008 à 9h58min34sec :

Conditions de mesure :

• Détecteur non éclairé (Diodes éteintes)

• 200 burst de lecture

• 10 frames par burst (1/10 prise en compte)

• burst delay : 1 s

• soustraction du pixel de référence.

● résultats ReadFrame.c :

Je vais afficher les résultats sur le bruit de cette mesure toutes les dix frames. C'est assez

intéressant pour voir l'évolution du bruit au bout de 10, 20, 30, 40, .. frames :

Le mean_noise est le résultat final du programme readFrame c'est la moyenne de tout les

bruits calculés sur les différences de pixels dans des frames consécutives.

Numero de

frame

« mean_noise » : bruit total

10 12.39 (unité ADC*)

20 13.04

30 13.33

40 13.40

50 13.40

60 13.38

70 13.39

80 13.39

90 13.40

100 13.38

110 13.39

120 13.38

130 13.38

140 13.38

150 13.38

160 13.38

170 13.40

180 13.40

190 13.40

On remarque que le bruit se stabilise au bout de 4O frames.

Le bruit est ici de 13 unités ADC soit d'environ 26 électrons.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 36


L'unité ADC : On a environ 1 unité ADC = 2 électron de bruit. Ce résultat dépend de la

calibration du détecteur. La calibration est faite en comparant la réponse du détecteur

éclairé par une led (dont nous connaissons les tensions d'alimentation) à la réponse de

photo-diodes placées à proximité du détecteur.

Résultat pour la même mesure avec le logiciel readFrame_pack.c :

Rappelons que dans ce programme, nous calculons deux bruits (voir page 30) :

• Sum_total (nom de la variable dans le programme ) = bruit 1 dans l'explication.

• Sum_total_average = bruit 2 dans l'explication.

Il y a la dispersion d'un pixel d'une frame à l'autre ( bruit 1 ) et la dispersion de la

moyenne de la différence de deux paquets ( bruit 2).

Nombres de frames dans un paquet Bruit 2 Bruit 1

10 5,05 (unité ADC) 4,47

15 4,55 3,76

20 4,38 3,34

25 4,45 3,05

30 4,41 2,84

Il est important de noter aussi le « nfrafirst » qui est le nombre de premières frames

que l'on ne prend pas en compte dans le calcul du bruit car leurs valeurs sont perturbées :

c'est-à-dire trop hautes et ne correspondent pas à la charge trouvé en régime stationnaire.

Dans ces résultats, on a sauté les 30 premières frames (nfrafirst = 30). Il ne faut pas

oublier aussi que dans ce programme, nous prenons en compte des paquets de frames

pour les calculs. On peut évidemment régler le nombre de frames que l'on met dans un

paquet.

Le bruit 2 va en diminuant quand on augmente le nombre de frames jusqu'à 30, il

re-augmente ensuite. On pense que, au dessus de 30 frames par paquet, d'autres

paramètres rentrent en compte et se traduisent par une augmentation du bruit.

On voit clairement que le bruit à été diminué plus de deux fois, On passe de 13 unités

ADC avec readframe.c à 4,4 unités ADC avec readFrame_pack.c . C'est la seule mesure

avec laquelle nous obtenons des résultats de bruits aussi bas. Ces conditions de mesures

sont donc intéressantes et il faudra recommencer pour voir si nous obtenons toujours des

résultats aussi bas. Les chiffres du bruit 1 semblent même un peu trop bas par rapport aux

prévisions, on pense à une « erreur » dûe à des corrélations non prises en compte dans

cette méthode de calcul du bruit par différence de deux frames appartenant à deux

paquets distincts. On ne sait pas à l'heure actuelle pourquoi le bruit est ici si bas.

On a eu des mesures où les résultats du programme readFrame_pack (bruit sur la

moyenne de la différence de deux paquets ) ne sont pas beaucoup plus bas que ceux du

programme readFrame ( bruit sur la différence de 2 frames consécutives ) .

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 37


En ce moment, les résultats de readFrame_pack pour le bruit 1 ne sont pas encore sûrs. Il

est préférable de ce concentrer sur les résultats de readFrame et du bruit 2 dans

readFrame_pack .

Rappelons que ici les diodes sont éteintes, le détecteur n'est pas éclairé, c'est donc juste

le bruit de lecture que nous observons ici.

Résultats de la mesure du jeudi 14 Février 2008 à 15h58 :

Conditions de mesures :

• burst delay : 10 s

• 10 frames par burst

• 250 burst

• soustraction du pixel de référence

Résultat readFrame.c :

Le mean_noise que j'affiche ici correspond toujours au bruit sur la différence de 2

frames consécutives.

Numero de

frame

« mean_noise » : bruit total

10 12.70 (unité ADC*)

20 14.41

30 14.61

40 13.91

50 14.98

60 15.05

70 15.14

80 15.20

Le bruit continue à augmenter pour atteindre 15.38 unités ADC à la frame 250

On remarque ici, avec une mesure à 10s de burst_delay, que le bruit est légèrement

supérieur par rapport à la mesure avec 1s de burst_delay.

Résultats de la mesure du mercredi 13 Février 2008 à 14h43 :

Conditions de mesures :

• Intensité diode = 1,5 μA

• 200 burst

• burst delay 1s

• nfrafirst = 30

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 38


Résultats readFrame_pack.c

Nombres de frames dans un paquet

sum_total_average : Bruit moyenné sur tous les paquets

10 9,64 (unité ADC)

15 12,98

20 12,03

25 12,86

30 13,8

Avec la diode allumée, c'est le bruit de Poisson qui est dominant ( rappellons que le

bruit de Poisson provient de la fluctuation du flux de photon émis depuis les diodes ou

depuis les étoiles ). On remarque en effet que pour un même burst delay ( 1 seconde ) et

sur les résultats du même programme ( readFrame_pack.c ) le bruit entre une mesure

sans diode ( 9h58 ) et une mesure avec diode ( 14h43 ) augmente significativement : il

passe de environ 4.50 à 12.80 unités ADC ( soit environ 25 electrons volts de bruit ) .

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 39


Conclusion technique

Sur beaucoup de mesures (avec beaucoup de configurations différentes), nous

avons des résultats très variables et aussi des résultats variables dans des configurations

similaires. Il reste donc un certain nombre de questions à élucider.

Les défauts du détecteur, de la partie hardware comme de la partie software

rendent des résultats parfois insignifiants. Le grand nombre de paramètres réglables sur

chaque mesure, la longueur des mesures (3000 secondes pour certaines) et les incidents

de mesure font que les travaux de recherche sur le bruit de ce détecteur sont loin d'être

finis. Il faut encore multiplier ces mesures pour agrandir le nombre de résultats et ainsi

comprendre le bruit et mieux connaître la part du bruit de lecture et celle du bruit de

Poisson.

Nous pouvons cependant tirer des conclusions à partir des résultats observés à la

fin de ce stage . Nous avons vu sur les résultats du programme readFrame que le temps

de retard entre chaque burst_delay joue significativement sur le bruit, un burst_delay court

autorise moins de bruit qu'un long. Les résultats de readFrame_pack ne sont pas encore

sûrs mais il semblerait que la manière de calculer le bruit dans le programme

readFrame_pack.c nous donne un bruit moins grand. En effet, regrouper les frames en

paquets pour ensuite moyenner leurs différences et calculer la variance des ces

moyennes est une méthode qui se révèle plus efficace que celle utilisée dans

readFrame.c (calcul directe de la variance des différences de pixels de deux frames

consécutives). Cependant il ne faut pas mettre trop de frames par paquets sinon le bruit

devient plus mauvais ( le bruit baisse de 5 à 20 frames par paquets, et re-augmente

ensuite en dépassant 30 frames par paquet).

Les premières conclusions des résultats de readFrame_burst.c nous amènent à

dire que, contrairement à nos prédictions, prendre en compte une frame sur dix donne un

bruit meilleur (donc plus bas) que prendre en compte un burst sur 10. Ces résultats sont

peut être dûs à des fluctuations de tensions d'alimentation du détecteur pas encore bien

identifiées.

Les recherches se déroulent actuellement sur un autre détecteur : le H2RG, qui

peut être considéré comme le détecteur H1RG de deuxième génération.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 40


Conclusion générale

Ce stage que j'ai passé au sein de l'équipe Supernoave à l'Institut de Physique

Nucléaire de Lyon à été pour moi une expérience très enrichissante. En effet, n'ayant fait

dans le passé que des stages en entreprise, je ne connaissais pas du tout le monde de la

recherche. Travailler avec des chercheurs et des ingénieurs maniant des principes tel que

« expansion de l'univers » , « supernovae », « big-bang » ou encore « accélérateurs de

particules » est très impressionnant. J'ai pu assister à un séminaire scientifique sur

l'architecture de l'univers proche qui à été très intéressant.

Cependant j'ai été surpris par la dimension très pratique et technique du travail de

recherche. J'ai réalisé que les chercheurs passaient beaucoup de temps en

manipulations, à prendre des mesures, à les recommencer en cas d'erreurs, à

programmer ou alors à analyser des disfonctionnements dans les expériences. Je me suis

alors détaché de l'image cliché du chercheur perché dans les théories abstraites.

Après l'I.U.T, je vais me diriger vers des études de commerce, ce qui n'a rien à voir

avec le monde de la recherche. Mais avec ce stage, j'ai quand même beaucoup appris sur

la rigueur scientifique et technique et aussi sur la persévérance dont il faut faire preuve

pour trouver des solutions à un problème. Ces valeurs sont bénéfiques dans tous les

domaines.

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 41


annexes

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 42


Sommaire des annexes

Glossaire ..............................................................................................page 44

Glossaire UNIX......................................................................................page 45

Le programme readFrame_pack.c : Code en C ...................................page 46

Bibliographie / Sources : ......................................................................page 60

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 43


Glossaire

• CNRS : Centre National de la Recherche Scientifique

• SNAP : SuperNova / Acceleration Probe

• redshift : Au moment de l'explosion de l'étoile, le corps émet un rayonnement bleu

car la chaleur est très intense. Avec la distance, le rayonnement nous parvient dans

le domaine des infrarouges : c'est un redshift.

• Naine blanche : Les naines blanches forment le résidu des étoiles en fin de vie qui

n'ont pas explosé en supernovae.

• L’accrétion désigne en astrophysique, en géologie, en médecine et en

météorologie la constitution et l'accroissement d'un corps, d'une structure ou d'un

objet par apport et/ou agglomération de matière, généralement en surface ou en

périphérie de celui-ci.

• Spectre éléctromagnétique : Le spectre électromagnétique est la décomposition

du rayonnement électromagnétique selon ses différentes composantes en terme de

fréquence, d'énergie des photons ou encore de longueur d'onde.

• H1RG : nom du détecteur infrarouge utilisé (comme H2RG)

• frame : une frame correspond à une 'photo' prise à un instant t

• burst : les bursts sont des 'groupes' de frames qui sont lus plusieurs fois en

moyenné pour diminuer le bruit statistique dû à la lecture

• ADC : Analog to Digital Convertor

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 44


Glossaire UNIX

cd .. : permet de remonter d'un répertoire dans l'arborescence

ls chemin/répertoire : liste tous les fichiers et répertoires contenus dans le répertoire

cible

ll chemin/répertoire : idem à ls mais avec plus de détails ( taille, autorisations...)

cd répertoire : change de répertoire courant

nedit fichier : édite le fichier cible

& : placé en fin d'instruction, permet de garder la main dans la fenêtre

rm fichier : efface le fichier cible

cp fichier : copie le fichier cible

mv fichier : déplace le fichier cible

mkdir nomdossier : crée un répertoire nommé 'nomdossier'

gunzip fichier.zip : dézippe un fichier compréssé

gv fichier.ps : édite le graphe du fichier

pine : permet de consulter les mails sous UNIX

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 45


Le programme readFrame_pack.

#include

#include

#include

#include

#include "constant_fpga.h"

#define FALSE 0

#define TRUE 1

#define SWAP FALSE

#define HEADER_SIZE 19

int readU32( unsigned int *, FILE*, int);

int swapU16 ( unsigned short * );

unsigned short** readDataByFrame( FILE *fp, unsigned long numFrame, unsigned long *header);

unsigned long *readHeader(FILE *fp);

void close_all();

FILE *fp_raw;

#define REF(f,i,j) f[j][i*2+1]

#define OUT7(f,i,j) f[j][i*2]

typedef struct _dataHeader{

unsigned long adcTestMode;

unsigned long resetMode;

unsigned long outputMode;

unsigned long readoutMode;

unsigned long windowMode;

unsigned long debugMatrixEnb;

unsigned long nbBurst;

unsigned long nbFrame;

unsigned long burstDelay;

unsigned long burstDelayRange;

unsigned long adcFrequencyDiv;

unsigned long pixelResetWidth;

unsigned long rowResetWidth;

unsigned long startRow;

unsigned long stopRow;

unsigned long startPixel;

unsigned long stopPixel;

} DATA_HEADER;

int main(argc, argv)

int argc;

char **argv;

{

unsigned int dataIn;

/*unsigned long dataHeader[19];*/

unsigned long *dataHeader;

unsigned short adcTestMode;

unsigned short resetMode;

unsigned short outputMode;

unsigned short readoutMode;

unsigned short windowMode;

unsigned short debugMatrixEnb;

unsigned short nbBurst;

unsigned short nbFrame;

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 46


unsigned short burstDelay;

unsigned short burstDelayRange;

unsigned short adcFrequencyDiv;

unsigned long adcFrequency;

unsigned short pixelResetWidth;

unsigned short rowResetWidth;

unsigned short startRow;

unsigned short stopRow;

unsigned short startPixel;

unsigned short stopPixel;

unsigned short startRowima;

unsigned short stopRowima;

unsigned short startPixelima;

unsigned short stopPixelima;

unsigned long frameSize;

unsigned long dataSize;

unsigned short numFrame;

int nfra,ind,icold,nframax,nburstmax,nfrafirst,indl,iscan,jscan,ii,jj;

float zfra[1000][50],dfra[48000],ssfra[48000],ssfra2[48000],ssfra_new[48000][2],ssfra_new2[48000]

[2],enoise_pack[48000],sum_new[48000],sum_new2[48000],dfra_new[48000],

enoise[48000];

float zfral[5000][2],dfral,ssfral[1200],ssfra2l[1200],ssfraj[1200],result_noise[1000];

float sumfra[48000],sumfral[1200],zref[1000][50],ssfraref[1200],dfraref[1200],zfraref[1000]

[50],ssfra2ref[1200],xnav,val;

float mean_noise,mean_count,sumnoise[250],sumcount[250],bnoise,mean_noise_pack,zfra_old[1000]

[50],average[1000][50];

float enoise_average[1000]

[50],sum_average[1000],sum2_average[1000],noise_average[1000],sum_enoise[1000],sumtotal,sumtotal_av

erage;

int frcount,indfirst,indmax,kfrb,kfrbmax,npack,ipack,iaverage,ind_count,nbpack;

unsigned short dimx;

unsigned short dimy;

unsigned short dimxima;

unsigned short dimyima;

char file_raw[200];

int i,j,indx,id0,id1,id2,id3,id4,id5,id6,id7,id8,id9,imax,jmax,ifrb;

unsigned short **frame;

if( argc != 3 ){

printf("USAGE %s \n", argv[0]);

return 0; }

printf("fichier lu %s\n",argv[1]);

strcpy(file_raw, argv[1]);

printf("initialisation faite %s\n",argv[1]);

fp_raw=fopen(file_raw,"r");

if( fp_raw == NULL){

printf("Can't open file %s not found or acces denied \n", argv[1]);

return -1;}

nburstmax = atoi(argv[2]);

nframax = nburstmax*nbFrame;

printf("atoi(argv[2]) %d\n",atoi(argv[2]));

printf("nburstmax nframax nbFrame %d,%d,%d\n",nburstmax,nframax,nbFrame);

rewind(fp_raw);

rewind(fp_raw);

dataHeader = readHeader(fp_raw);

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 47


if( dataHeader[0] != 0x01234567 || dataHeader[18] != 0x89ABCDEF )

{

printf("Invalid Header\n");

close_all();

return 1;

}

adcTestMode = (dataHeader[1] & (0x1));

resetMode = (dataHeader[2] & (0x1));

outputMode = (dataHeader[3] & (0x1)) ? DUAL : SINGLE;

readoutMode = (dataHeader[4] & (0x1)) ? FAST : SLOW;

windowMode = (dataHeader[5] & (0x1)) ? WINDOW_MODE_ENB : WINDOW_MODE_DIS;

debugMatrixEnb = (dataHeader[6] & (0x1));

nbBurst = dataHeader[7];

nbFrame = dataHeader[8];

burstDelay = dataHeader[9];

burstDelayRange = dataHeader[10];

adcFrequencyDiv = (readoutMode == SLOW) ? (dataHeader[11] & 0x3) : ((dataHeader[11] & 0xC) >> 2);

pixelResetWidth = dataHeader[12];

rowResetWidth = dataHeader[13];

startRow = dataHeader[14];

stopRow = dataHeader[15];

startPixel = dataHeader[16];

stopPixel = dataHeader[17];

adcFrequency = (readoutMode == SLOW) ? 100 : 5000;

adcFrequency = adcFrequency / (unsigned long)( powl(2.0, (double)(adcFrequencyDiv)));

if (adcTestMode != 0)

{

printf("Invalid data file adcTestMode=1 !\n");

close_all();

return 1;

}

if (debugMatrixEnb != 0)

{

printf("Invalid data file debugMatrixEnb=1 !\n");

close_all();

return 1;

}

nframax = nburstmax;

printf("before if window_mode %d\n",nframax);

printf("rowResetWidth pixelResetWidth %d,%d\n",

rowResetWidth,pixelResetWidth);

if(windowMode== WINDOW_MODE_ENB)

printf("Frame size = from (y=%d)to(y=%d)and (x=%d)to(x=%d)\n",

startRow, stopRow,startPixel, stopPixel );

else

{

printf("Frame size = from (x=%d,y=%d) to (x=%d,y=%d)\n", 0, 0,1023, 1023 );

printf("startRow stopRow startPix stopPix %d,%d,%d,%d\n",

startRow,stopRow,startPixel,stopPixel);

}

jscan =0;

startRowima = 50*jscan;

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 48


stopRowima = startRowima+50;

printf("startrow stoprow jscan %d,%d,%d\n",startRowima, stopRowima,jscan);

kfrbmax=nframax/10;

for(kfrb=0;kfrb


nfrafirst = 30;

printf("nframax %d\n",nframax);

xnav = ((nframax-nfrafirst)/10)-1;

printf("startpixelima stoppixelima dimx dymx xnav %d,%d,%d,%d,%f\n",

startPixelima,stopPixelima,dimxima,dimyima,xnav);

printf("nframax dimx dimy %d,%d,%d\n",nframax,dimx,dimy);

/* start loop on frames */

for (nfra = nfrafirst ; nfra < nframax; nfra++)

{

if(nfra>nfrafirst)

frcount = frcount+1;

numFrame = nfra;

/*printf("nfra nframax start loop nfra %d,%d\n",nfra,nframax);*/

if (numFrame >= nbBurst )

{

numFrame = nbFrame*nbBurst-1;

printf("Warning invalid frame number max in this file is %d\n", numFrame);

}

/* printf("frame number nfra numFrame %d,%d\n",nfra,numFrame);*/

frame= readDataByFrame(fp_raw, numFrame, dataHeader);

if(frame==NULL)

{

printf("Read error \n");

close_all();

return(1);

}

if(windowMode != WINDOW_MODE_ENB)

{

printf("OUT7 FRAME NOWINDOW nframax numfra dimxima dimyima (%d,%d,%d,%d)\n",

nframax,numFrame,dimxima,dimyima);

ind = 0;

printf("before start stop dimxima %d,%d,%d\n",

startRowima,stopRowima,dimxima);

for(jj=startRowima; jj


j = jj-startRowima;

/* end loop i for references */

/* start loop i for active pixels */

for(ii = startPixelima;ii nfrafirst)

{

dfra[ind] = zfra[ind][1]-zfra[ind][0];

ssfra[ind] = ssfra[ind] + dfra[ind];

ssfra2[ind] = ssfra2[ind] + dfra[ind]*dfra[ind];

}

/* end if */

zfra[ind][0] = zfra[ind][1];

}

/* end loop i */

}

/* end loop j */

/* averages computed, print them later */

fflush(NULL);

/* end case no window image */

/* printf("end case nowindow frame %d\n",nfra); */

}

/* end case no window image */

else

{

/*printf("nfra %d\n",nfra);*/

/*printf("case window nfra %d\n",nfra);*/

/*printf("REF FRAME (%d)\n", numFrame);*/

/* this section only for dfra */

/* printf("start loop ref window dimxima dimyima %d %d \n",dimxima,dimyima);*/

/* printf("frcount %d\n",frcount);*/

jmax=startRowima+dimyima;

imax=startPixelima+dimxima;

npack=15;

ifrb=(nfra-nfrafirst)%npack;

ipack=(nfra-nfrafirst)%npack;

for(j=startRowima; j


* end loop j */

fflush(NULL);

/* printf("OUT7 FRAME nfra (%d)\n",numFrame);*/

/*printf("start loop window dimxima dimyima %d,%d\n\n\n",dimxima,dimyima);*/

for(j=startRowima; j


for(j=startRowima; j


}

id7 = dimxima*j+7;

id8 = dimxima*j+8;

id9 = dimxima*j+9;

/* printf("%x ",OUT7(frame,j,i)) ; */

/*printf ("enoise %d,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f\n",

jj,enoise[id0],enoise[id1],enoise[id2],enoise[id3],enoise[id4],

enoise[id5],enoise[id6],enoise[id7],enoise[id8],enoise[id9]);*/

/* printf("j jj %d %d\n", j jj);*/

/* end loop j */

mean_noise_pack = mean_noise_pack/mean_count;

/*printf("nfra area startj stopj starti stopi mean_count mean_noise,%d %d,%d,%d,%d,%f,%f\n",

nfra,startRowima,stopRowima,startPixelima,stopPixelima,mean_count,mean_noise);*/

printf(" mean_noise_pack %f\n",mean_noise_pack);

mean_noise_pack=0;

for (ind = indfirst; ind


printf("i j ind ipack nbpack noise_average sum_enoise %d %d %d %d %d %f

%f\n",i,j,ind,ipack,nbpack,noise_average[ind],sum_enoise[ind]);

}//end loop startpixelima//

}//end loop startrowima//

}/*end if nfra==nframax*/

fflush(NULL);

free(frame);

}

/*end loop nfra*/

sumtotal=0;

sumtotal_average=0;

ind_count=0;

for(j=startRowima; j


unsigned short startRowima;

unsigned short stopRowima;

unsigned short startPixelima;

unsigned short stopPixelima;

unsigned short rowResetWidth;

unsigned short pixelResetWidth;

unsigned long frameSize;

unsigned long dataSize;

unsigned short windowMode;

unsigned short outputMode;

unsigned short dimx;

unsigned short dimy;

unsigned short dimxima;

unsigned short dimyima;

unsigned short lengthx;

int j;

windowMode = (header[5] & (0x1)) ? WINDOW_MODE_ENB : WINDOW_MODE_DIS;

outputMode = (header[3] & (0x1)) ? DUAL : SINGLE;

startRow = header[14];

stopRow = header[15];

startPixel = header[16];

stopPixel = header[17];

if(windowMode != WINDOW_MODE_ENB)

{

startRow = 0;

stopRow = 1023;

startPixel = 0;

stopPixel = 1023;

}

dimx = (stopPixel-startPixel + 1);

dimy = (stopRow-startRow + 1);

lengthx = (outputMode == DUAL) ? dimx*3 : dimx*2;

frameSize = (stopRow-startRow+1) * (stopPixel-startPixel+1);

dataSize = (outputMode == DUAL) ? frameSize*3 + 2 : frameSize*2 +2; /* size in 16 bits words */

rewind(fp);

fseek(fp, HEADER_SIZE*4+ numFrame*dataSize*2, SEEK_SET);

frame = (unsigned short **)(malloc(sizeof(unsigned short *)*dimy));

if(frame==NULL)

{

printf("Can't allocate memory\n");

return(NULL);

}

for(j=0 ; j


fread(frame[j], sizeof(unsigned short), lengthx, fp);

}

return(frame);

}

unsigned long *readHeader(FILE *fp)

{

unsigned long *pt;

pt = (unsigned long*)(malloc(sizeof(unsigned long) * HEADER_SIZE) );

fread(pt, sizeof(unsigned long), HEADER_SIZE, fp);

return pt;

}

/******************************************

/* */

/* SWAP 2 BYTES of a 16 bits WORD */

/* */

/******************************************/

int swapU16( sbuf)

unsigned short * sbuf;

{

unsigned short lsb, msb;

if ( sbuf != NULL ) {

lsb = *sbuf > 8;

*sbuf = lsb | msb;

return 1;

}

else

return 0;

}

//********************************************

/* */

/* READ 2 BYTES in the file pointed by fp */

/* and SWAP if SW is TRUE */

/* - */

//********************************************/

int readU16(buf, fp, sw)

unsigned short * buf;

FILE *fp;

int sw;

{

unsigned short tmp_buf;

if (buf != NULL)

{

if (sw == TRUE) {

if(fread(&tmp_buf, 2, 1, fp) != 0){

swapU16(&tmp_buf);

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 57


*buf = tmp_buf;

return(1);}

else

return(0);

}

else {

fread(buf, 2, 1, fp);

return(1);

}

}

else

return(0);

}

//********************************************

/* */

/* READ 4 BYTES in the file pointed by fp */

/* and SWAP in the following way */

/* */

/* 1234 2143 */

/* */

/********************************************/

int readU32(buf, fp, sw )

unsigned int * buf;

FILE *fp;

int sw;

{

unsigned short sbuf_lsb;

unsigned int buf_tmp;

unsigned int buf_msb;

unsigned int buf_lsb;

unsigned short sbuf_msb;

if ( buf != NULL ) {

if (sw == TRUE) {

if (fread(&buf_tmp, 4, 1, fp) != 0 ) {

sbuf_msb = (buf_tmp >> 16);

swapU16(&sbuf_msb);

sbuf_lsb = buf_tmp;

swapU16(&sbuf_lsb);

buf_msb = sbuf_msb;

buf_lsb = sbuf_lsb;

*buf = (buf_lsb >> 16 ) | buf_msb;

return 1;}

else

return 0;}

else {

return(fread(buf, 4, 1, fp)); }

}

else

return 0;

}

/******************************************/

/* */

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 58


* Close all files and free memory */

/* */

/******************************************/

void close_all()

{

fclose(fp_raw);

}

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 59


Source / Bibliographie

Rapports scientifiques de l'IPNL 2004 et 2005

Plaquette de L'IN2P3

Plaquette de L'IPNL

Sitographie

http://fr.wikipedia.org/wiki/Supernova : site de renseignement sur les supernovae

lyoinfo.in2p3.fr/ : site de l'IPNL

http://snap.lbl.gov/ : site du projet SNAP

Nicolas Darde - Rapport de stage DUT - Études des pauses de longues durées. 60

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!