silicon_photodiode_qe — OPTICS spectral op

• Data kinds: कोई नहीं → pairs (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)

• Call: import fullseye as fs; fs.ledger.silicon_photodiode_qe(collection_depth_um=3.0, dead_layer_um=0.0, front_reflectance=None, wl_min_nm=300.0, wl_max_nm=1200.0, n_points=181) (implementation को सीधे call करना हो तो import spectralrad; spectralrad.silicon_photodiode_qe(collection_depth_um=3.0, dead_layer_um=0.0, front_reflectance=None, wl_min_nm=300.0, wl_max_nm=1200.0, n_points=181), registry से लेना हो तो opsoptics.get("silicon_photodiode_qe"))

उपयोग

Si के n,k से Si photodiode की external quantum efficiency (electrons प्रति photon)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

QE(λ) = (1 − R(λ)) · [exp(−α d₀) − exp(−α (d₀ + W))]、α = 4πk/λ(Si の k は materials の Green 2008、300 K)。W = *collection_depth_um*(空乏層 + 拡散で集まる深さ。裏面照射の CMOS で ≈ 3 µm、NIR 強化品で 6〜10 µm、PIN フォトダイオードで 50 µm 以上)、d₀ = *dead_layer_um* (表面の再結合で失う層)。*front_reflectance* が None なら空気/Si の Fresnel(≈ 0.3、反射防止膜なし)、数を与えればその一定値(反射防止膜つきなら 0.02〜0.05)。

集める深さが有限なので、吸収端(1.1 µm)より手前から QE が落ちる —— 厚いほど NIR に効く。

返り値: pairs(λ nm, QE)。Green 2008 の範囲(250〜1450 nm)の外は ValueError。

पूरी family का input contract (fail-closed)

optics के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• Unit argument के नाम में ही लिखी होती है — _mm / _um / _deg / _mrad। mm और µm की गड़बड़ी crash नहीं करती, बल्कि "सही दिखने वाला पर गलत उत्तर" देती है, इसलिए नाम से इसे रोका जाता है। मान के आकार से unit का अनुमान बिल्कुल नहीं लगाया जाता।

• String से ValueError — float('50') सफल हो जाता है, इसलिए बिना parse किया config value length के रूप में निकल जाता (मापा गया: thin_lens('50', '200') सही दिखने वाला 66.667 mm लौटा रहा था)। bool को भी True == 1 वाले implicit promotion के रूप में अस्वीकार किया जाता है।

• complex / masked array से ValueError (केवल real-valued slots; imaginary part को चुपचाप छोड़ना या mask हटाना अस्वीकार)। हर input पर NaN/Inf से ValueError।

• शून्य से भाग और उससे जुड़े मामलों को नाम लेकर अस्वीकार किया जाता है: focal length 0, radius of curvature 0, refractive index <= 0, पूरी तरह opaque aperture (सब 0, इसलिए normalisation 0/0), ऐसा PSF जिसका योग <= 0 हो, S0 = 0 वाला Stokes vector, और front focal point पर रखा object (image अनंत पर)।

• केवल 2 ops non-finite value लौटाते हैं, और वह भी contract के रूप में लिखा हुआ: depth_of_field hyperfocal distance से आगे far_mm = inf (hyperfocal distance की परिभाषा यही है) और gaussian_beam waist पर wavefront_radius_mm = inf (plane wavefront की radius of curvature)। दोनों साथ में एक finite साथी (far_is_infinite / curvature_per_mm) भी लौटाते हैं। इसके अलावा कोई भी चुपचाप आया NaN/Inf अंदर ही पकड़ा जाता है और ValueError देता है — "float64 overflow हुआ" और "उत्तर अनंत है" अलग-अलग दावे हैं, इसलिए पहले को दूसरे का चेहरा पहनाकर नहीं लौटाया जाता।

• Size की सीमा: generate होने वाले grid के लिए optics.MAX_GRID (4096), दिए गए field/PSF/aperture के लिए optics.MAX_FIELD_ELEMENTS (2^24), ABCD element chain के लिए optics.MAX_SYSTEM_ELEMENTS (1024), Zernike के लिए MAX_ZERNIKE_TERMS (512) / MAX_ZERNIKE_ORDER (40) / MAX_ZERNIKE_BASIS (2^25)। छोटे argument से बहुत बड़ा internal allocation होने वाले रास्तों (मापा गया: n_max=40 × 4096² पर 108 GB) को fail-closed ढंग से बंद किया गया है।

• भौतिक रूप से असंभव states भी अस्वीकार: degree of polarisation > 1 वाला Stokes vector, ऋणात्मक transmittance, ऋणात्मक intensity, और n-|m| odd जैसे अमान्य Zernike indices।

उपयोग की विस्तृत guide

• optics_imaging family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_fiber_light_guide — py -3.11 examples/poc_fiber_light_guide.py

• poc_nir_silicon_transmission — py -3.11 examples/poc_nir_silicon_transmission.py

वे अगले ops जिनसे type जुड़ता है (pairs को input के रूप में लेते हैं)

mtf50 · energy_to_photons · spectral_product · spectral_integral · spectral_stats · kubelka_munk_reflectance · hyperspectral_capture · film_thickness_fft

इसी category के (spectral)

blackbody_spectrum · cie_illuminant_a · led_spectrum · bandpass_spectrum · energy_to_photons · spectral_product · spectral_integral · spectral_stats


*Provenance: spectralrad.py — OPTICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.