Camera#

class phise.Camera(
e: astropy.units.Quantity | None = None,
ideal: bool = False,
name: str = 'Unnamed Camera',
)[source]#

Bases: object

Représentation d’une caméra virtuelle utilisée pour la détection de photons.

Cette classe encapsule des paramètres simples d’un capteur (temps d’exposition, nom, mode idéal) et fournit une méthode pour convertir des champs électriques complexes en nombre de photons détectés durant l’exposition.

__init__(
e: astropy.units.Quantity | None = None,
ideal: bool = False,
name: str = 'Unnamed Camera',
)[source]#

Initialise la caméra.

Paramètres#

eOptional[astropy.units.Quantity]

Temps d’exposition. Doit être une quantité avec une unité de temps (par exemple 1 * u.s). Si None la valeur par défaut 1 s est utilisée lorsque possible.

idealbool

Si True, la caméra est considérée idéale et renverra la valeur entière attendue sans bruit (tronquée). Si False, un bruit de comptage (Poisson) est simulé.

namestr

Nom lisible pour la caméra.

Exceptions#

TypeError

Si ideal n’est pas un booléen ou si name n’est pas une chaîne de caractères.

ValueError

Si la quantité e ne peut pas être convertie en unité de temps.

property e: astropy.units.Quantity#

Temps d’exposition de la caméra en secondes.

Retourne une astropy.units.Quantity exprimée en secondes. L’accesseur n’effectue pas de conversion supplémentaire ; la conversion est gérée dans le setter.

property parent_interferometer: Interferometer#

Référence en lecture seule vers l’interféromètre parent.

Le setter est en lecture seule et l’attribut doit être configuré par l’objet parent (ex. une instance d’Interferometer) si nécessaire.

property ideal: bool#

Indique si la caméra est en mode idéal (sans bruit).

Retourne True lorsque le bruit de détection est désactivé. Le mode idéal est utile pour des tests déterministes.

property name: str#

Nom lisible de la caméra.

Retourne une chaîne de caractères représentant le nom de l’objet.

acquire_pixel(ψ: ndarray[complex]) int[source]#

Simule l’acquisition d’un pixel à partir de champs électriques.

La méthode calcule le nombre moyen de photons attendus comme la somme des puissances |ψ|^2 multipliée par le temps d’exposition e. Puis elle simule la détection selon le mode :

  • si ideal : retourne la valeur entière tronquée de l’espérance (déterministe) ;

  • sinon : pour des espérances raisonnables (<= 2e9) on tire d’une loi de Poisson ; pour des espérances très grandes on utilise une approximation gaussienne pour éviter des problèmes de performance.

Paramètres#

ψnumpy.ndarray de nombres complexes

Tableau 1D (ou broadcastable) contenant les amplitudes complexes du champ électrique (unités : s**(-1/2)).

Retour#

int

Nombre de photons détectés pendant l’exposition.

Remarques#

  • La méthode retourne un entier >= 0. Les détails numériques (seuil 2e9) sont choisis empiriquement pour basculer vers une approximation normale lorsque la loi de Poisson devient coûteuse.

  • Pour des usages reproductibles, régler le germe du générateur aléatoire avant d’appeler la méthode (par ex. via np.random.seed(...)).