イントロダクション

古典光源と量子光源は、量子光学や量子コンピューティングからレーザー干渉計などの古典分野に至るまで、幅広い用途に用いられています。光源は、統計的な放射特性によって、コヒーレント光源、熱光源、カオス光源、量子光源に分類されることがよくあります。コヒーレント光源には、位相が安定し、放射される光子数がポアソン分布を示すレーザーが含まれます。電球のフィラメントや星などの熱光源は、多数の無相関な放射源からバースト状に光を放射します。スクイーズド光や単一光子放射源などの量子光源は、「反集束」現象を示し、光子を観測した直後に次の光子を検出する確率が最も低くなります。これは、古典光源では発生できない、本質的に量子的な現象です。

量子応用においては、真に量子的な光源であることを確認するために、光の統計的放射特性を評価することがしばしば不可欠です。同様に、レーザーの精度は、光子数を支配するポアソン統計によって制限されるべきです。光放射のこれらの統計的特性を決定する一つの方法は、古典光学および量子光学で広く用いられている指標である\(g^{(2)}(\tau)\)相関関数を用いることです。

このアプリケーションノートでは、Mokuを使用して\(g^{(2)}(\tau)\)を測定する2つの方法を紹介します。 モクOS 4.1タイム&周波数アナライザには、畳み込み法を用いてリアルタイムで動作する \(g^{(2)}(\tau)\) 計算機が組み込まれています。また、Moku タイム&周波数アナライザを使用してイベントデータをキャプチャしてタイムスタンプを付け、後処理でペアワイズ法を用いて \(g^{(2)}(\tau)\) を計算することもできます。本稿では両方の手法の概要を説明し、Moku を使用して時間タグ付き光子イベントをシミュレートおよび記録し、検証します。次に、時間遅延ヒストグラムを生成し、それを使用して2次相関関数を計算する手順を説明します。そして、これをタイム&周波数アナライザに組み込まれている \(g^{(2)}(\tau)\) 関数と比較します。

アプリケーションノートをダウンロード

2次相関関数とは何ですか?

2次相関関数 \(g^{(2)}(\tau)\) は、時間間隔 τ におけるイベントの割合を、期間 \(T\) にわたって検出されたイベントの平均数と比較して測定します。\(\tau=0\) における値は特に重要であり、光源から同時に放出される光子の数に関する情報を推測することができます。例えば、

\(g^{(2)}(0)>1\)の場合、光源は光子を束ねて放出する傾向があります。これはバンチング現象と呼ばれ、通常は熱光源の特性を示します。例えば、\(g^{(2)}(\tau=0)=2\)は、ある時間\(T\)内で任意の時間遅延\(\tau\)で区切られたイベントの平均数と比較して、時間遅延がゼロに近いイベントの数が2倍であることを意味します。

\(g^{(2)}(0)<1\)の場合、光源は一定の間隔で光子を放出する傾向があり、一度に複数の光子を放出する可能性は非常に低い。これはアンチバンチング挙動と呼ばれ、単一光子源にとって望ましい特性である。

\(g^{(2)}(0)=1\) の場合、放出された光子間に相関は存在しません。これは通常、レーザーなどのコヒーレント光源に当てはまります。

これら 3 つのケースのシミュレーションを以下の図 1 に示します。

図1. ポアソン分布(ランダム)、バンチ分布、および反バンチ分布のモンテカルロシミュレーション。コヒーレント分布の場合は時間範囲全体にわたって1で安定しているのに対し、バンチ分布と反バンチ分布の場合はτ=0でそれぞれ2と0に近づく。このグラフでは、2次相関関数は各ケースについて2つの異なる方法で計算されている。これらの方法については、本アプリケーションノートの後半で説明する。

\(g^{(2)}(\tau)\) の使用方法と計算方法を示すために、ハンバリー・ブラウン・トウィス (HBT) 効果を導入します。HBT 実験 (図 2 参照) では、試験対象の光源から 50/50 ビームスプリッターに光子ストリームが放射され、ビームスプリッターは個々の光子を 2 つの光路のいずれかに導きます。2 つの単一光子検出器 (任意に「A」および「B」とラベル付け) は、各アームを通過する光子の到着を監視します。2 つのアーム間の光路差は、2 つの検出器への光子の到着時間差をもたらします。検出器が光子イベントを記録すると、電気パルスを生成し、それを時間間隔アナライザー (TIA) に渡します。TIA の機能は、後の処理のために、A と B の両方で光子イベントを正確にタイムスタンプして記録することです。次のセクションで導出するように、イベント A と B 間の時間相関によって、2 次相関関数の値が決まります。

図 2. 光検出器 A と B からの出力を測定する、一般的な Hanbury-Brown-Twiss 測定セットアップ。イベント A から B までの時間オフセットは、時間間隔アナライザによって記録されます。

2次相関関数と一致率の定量化

2次相関関数\(g^{(2)}(\tau)\)は、光子検出カウントの時間平均積で与えられる。

\(g^{(2)}(\tau) = \frac{\langle n_A(t) n_B(t+\tau) \rangle}{ \langle n_A(t) n_B(t) \rangle} \)

ここで、\(n_A(t)\)と\(n_B(t)\)は、それぞれ時刻\(t\)と\(t + τ\)における検出器AとBでの検出光子イベントの検出率である。\(\langle . \rangle\)内の値は時間平均、すなわち、

\(\langle n_A(t) n_B(t+\tau) \rangle = \lim_{T\to\infty} \frac{1}{T}\int_0^T n_A(t) n_B(t+\tau) dt \).

\(g^{(2)}(\tau)\) の定量的な定義を確立したので、次に \(\langle n_A(t) n_B(t+\tau) \rangle\) の決定方法を説明します。これは時間平均同時発生率、つまり最初のイベントの発生源に関係なく、時刻 \(t\) に光子が1つ、時刻 \(t +\tau\) にもう1つの光子が見つかる確率密度です。つまり、A での最初のイベントに続いて、B でカスケード的に最初のイベント、2番目、または3番目のイベントが発生する可能性があります。同時発生率を計算する際には、これらすべてのイベントを考慮する必要があります。次に、これらの τ 値をビンにまとめ、正規化して \(\langle n_A(t) n_B(t+\tau) \rangle\) の推定値を生成します。

時間遅延ヒストグラムの測定

HBT測定の重要な部分は、光子イベントを収集し、時間間隔のヒストグラムを生成する時間間隔アナライザーです。Moku タイム&周波数アナライザ 図3に示すように、HBT測定を実行するように構成できます。このセットアップでは、単一光子検出器(SPD)AとBがMokuの入力AとBに接続されています。時間周波数アナライザは、SPDからの出力パルスを検出するように構成でき、入力Aが「開始」、入力Bが「終了」として機能します。MokuをHBT測定用に設定する方法の詳細については、当社の 構成ガイド トピックに関する。

図 3. Moku Time & Frequency Analyzer を使用してヒストグラムとタイムスタンプ付きデータを生成する HBT セットアップ。

測定シーケンス中、タイム&周波数アナライザは連続するイベントAとB間の遅延時間を記録し、そこから検出された光子ペア間の遅延の数密度をリアルタイムで構築します。タイム&周波数アナライザによって生成されるリアルタイムヒストグラムは最初のステップのイベントのみを測定するため、\(g^{(2)}(\tau)\)を計算するには後処理が必要であることに注意することが重要です。幸いなことに、次のセクションで説明する自己畳み込みと呼ばれるプロセスを通じて、時間間隔データの分布を\(g^{(2)}(\tau)\)の近似値に変換する方法があります。これは、Mokuタイム&周波数アナライザに搭載されている\(g^{(2)}(\tau)\)計算機の基礎となります。

間隔データの分析

時間・周波数アナライザで取得した間隔時間のヒストグラムを仮定します。この分布を\(k(\tau)\)と呼び、これは各光子と他のストリームの最初の後続光子との間の時間遅延を記録します。擬似コードでは、次のように記述できます。

for A_time in A:
    find the first B_time after A_time
    tau = B_time - A_time

前のセクションで述べたように、\(k(\tau)\) は最初のステップの遅延のみの確率密度関数です。\(k(\tau)\) は一見 \(\langle n_A(t) n_B(t+\tau) \rangle\) に似ていますが、一次寄与のみを含み、より長いカスケードによって発生する光子は除外されます。例えば、時刻 \(t + \tau_1 + \tau_2\) または \(t + \tau_1 + \tau_2 + \tau_3\) に到達する光子は考慮されません。

このため、\(k(\tau)\) は通常、\(g^{(2)}(\tau)\) を直接計算するためには用いられません。代わりに、イベント A とイベント B の間の明示的な一致を、ある最大時刻まで手動でカウントする必要があります。擬似コードでは、このプロセスは次のようになります。

for A_time in A:
    find all B_time that occur after A_time, within some t_max
    for each B_time
        tau = B_time - A_time

これらのτ値はヒストグラムを作成するためにビンにまとめられ、適切に正規化されます。これにより、\(g^{(2)}(\tau)=1\)は、その遅延において相関がないことを示します。この方法は直接的で直感的ですが、すべてのイベントAとすべてのイベントBを比較する必要があるため、スケール性が低くなります。これは\(O(N_A \times N_B)\)回の演算につながり、イベント発生率が高い場合はすぐに制御不能になる可能性があります。そのため、この機能をハードウェアでリアルタイムに実装することは困難です。

Moku時間周波数アナライザは、FPGAの独自の特性により適した、\(g^{(2)}(\tau)\)をリアルタイムで計算するための2つ目の代替手法を実装しています。この手法では、\(k(\tau)\)の高次自己畳み込みを実行し、\(k^{(n)}(\tau)\)で表される量で表されます。各\(k^{(n)}(\tau)\)は、時刻τに光子が発生する確率密度を表します。 nカスケードにおける n 番目の光子。言い換えれば、これは最初のイベントから n 光子後の子孫までの遅延分布に対応する。最初のトリガーから τ 後の時点で光子を観測する全確率密度 G(τ) は、それがどの世代から来たかに関わらず、無限和に比例する [1]。

\(G(\tau) \propto \sum_{n=1} ^\infty k^{(n)}(\tau)\)。

この和は、互いに排他的な経路の論理和として解釈されるべきである。これは、第1世代、第2世代、第3世代などによって時刻τに光子が出現する確率を表しているからである。各項は独立した可能性を表し、それらの和は遅延τにおける総到着密度を与える。したがって、

\(g^{(2)}(\tau) \propto G(\tau)\)。

次のセクションでは、\(g^{(2)}(\tau)\)を2つの方法で測定します。1つはタイムスタンプを記録して完全なペアワイズ値を計算する方法、もう1つはMokuに組み込まれている計算機を使用する方法です。

Moku Time & Frequency Analyzerを用いて\(g^{(2)}(\tau)\)を実験的に検証する

ポアソン分布をシミュレートするために、全電気式セットアップを使用し、 Moku:Pro. 活用する マルチインストゥルメントモードMoku FPGAを4つの計測器スロットに分割し、各スロットで計測の一部をエミュレートします。詳細と接続マップについては図4を参照してください。

図4. マルチインストゥルメントモードのレイアウト。1つの波形発生器が「光子源」として機能し、2つ目の波形発生器からパルスを出力します。パルスはMoku時間周波数アナライザに送られ、表形式に変換されます。オシロスコープは2つ目の波形発生器の出力を監視します。

まず、 波形発生器これにより、相関のない2つのノイズストリームが生成されます。設定画面で、出力Aと出力Bを有効にします。両方に「ノイズ」機能を選択し、レンジを1Vに設定します。波形発生器の設定については、図5を参照してください。

図5. Moku波形発生器の構成。出力AとBはノイズ源として機能し、相互に相関関係を持たないようにする必要があります。

次に、別の波形発生器を用いて、一対の光検出器の機能を模倣します。繰り返し周波数10MHz、パルス幅20nsのパルス出力を選択します。Nサイクルバーストモードを有効にし、しきい値を400mVに設定します。各チャネルは、最初の波形発生器のノイズ源のいずれかによってトリガーされます。このように、2番目の波形発生器は入力が特定の電圧しきい値に達するとトリガーされ、単一光子検出器の動作を彷彿とさせる方形パルスを出力します。この場合、しきい値は400mVですが、この値を変更することで「光子」イベントの頻度を変更できます。2番目の波形発生器の構成を図6に示します。

図6. Moku波形発生器の2番目の構成。チャネルAとBは、単一光子検出器を模倣し、ノイズ入力が閾値に達するまで待機してからパルスを出力します。

3番目に、 タイム&周波数アナライザ 入力 A および B で発生する「光子」イベントを検出します。イベントタブで、立ち上がりエッジでイベントしきい値を 0 V に設定し、イベント A からイベント B までの時間間隔を測定します。繰り返しレートが高いため、測定間隔を 100 ms にしてウィンドウモードで測定することができ、十分な数のイベントをキャプチャできます。最後に、出力を観察するために、オシロスコープを 4 番目のスロットに設定します。すべての計測器をセットアップし、波形発生器からの出力を有効にすると、図 7 のようにオシロスコープに出力が表示されます。チャネル A と B の両方に、ランダムに分布した「イベント」パルスが存在するはずです。時間的に近接している場合もあります。

図 7. 波形ジェネレータから放出された「光子」イベントを表示するオシロスコープの画面。市販の単一光子検出器で使用される TTL 信号を模倣しています。

時間&周波数アナライザーに戻ると、同様にこれらのイベントがヒストグラムに表示され始めます。前のセクションで述べたように、このヒストグラムは最も近いイベント間の時間間隔のみを反映しており、2次または3次のカスケードは考慮されていません。「間隔ヒストグラム」というボタンをクリックすると、\(g^{(2)}(\tau)\)のオンボード計算結果を表示できます。このボタンをクリックすると表示が切り替わります。これらは図8で並べて表示されています。相関はヒストグラムの自己畳み込みの結果であるため、見た目は大きく異なります。値は1付近で推移しており、イベントAとイベントBの間に相関がないことを示しています。これは、疑似ランダム分布の予想される結果です。

ペアワイズ法を用いて\(g^{(2)}(\tau)\)を生成するには、ヒストグラムを無効にして右下のデータロガーアイコンをクリックすることで、生のタイムスタンプデータをホストPCに記録できます。開始トリガーと収集時刻を設定し、赤いボタンをクリックしてログ記録を開始します。ログ記録後、クラウドアイコンをクリックし、最新のデータファイルを選択します。フォーマットが「NumPy」に設定されていることを確認し、任意の送信先に送信します。次のセクションでは、Pythonスクリプトを用いて\(g^{(2)}(\tau)\)を計算します。

図8. 上:タイム&周波数アナライザーによって表示されるヒストグラムはリアルタイムで更新され、イベントAB間隔の分布を示します。下:\(g^{(2)}(\tau)\)関数は1付近の安定した値を示しており、相関のないイベントを示しています。

タイムスタンプデータを使用してPythonで\(g^{(2)} (\tau)\)を計算する

これらの手法の一致を証明するために、Time & Frequency Analyzerによって生成されたタイムスタンプデータを使用して\(g^{(2)}(\tau)\)を推定します。このPythonノートブックは、 githubの.

標準パッケージのインポート後の最初のステップは、データを2つの配列 A_times と B_times にインポートすることです。次に、A イベントの後に発生する次の B イベントを計算し、Moku Time & Frequency Analyzer でプロットされたものと同じ一次間隔情報を取得します。タイムスタンプとヒストグラム情報の両方を使用して、前のセクションで説明した方法を使用して \(g^{(2)}(\tau)\) の計算を実行できます。最初の方法は図9に示されており、A_times の各イベントの後に発生するすべてのイベントを B_times で検索します。これらの値は適切にビン化され、正規化されます。

図9: すべての遅延を手動で計算して\(g^{(2)}(\tau)\)を計算する方法(ペアワイズ法と呼ばれる)。

2つ目の方法、すなわち一次イベントヒストグラムの自己畳み込みでは、先に定義した時間平均同時発生率に比例する量が得られます。これは、時間周波数アナライザを設定し、以下の方法でヒストグラムを取得することで得られます。 get_data() この関数は、時間ビンのリストと、それぞれのビンについて計算された相関値を返します。コードは図10に示されています。

図10: Pythonを介してMokuデバイスから\(g^{(2)}(\tau)\)データを直接取得する。

2つの手法を比較するために、Mokuデバイス上で生成されたプロットと、完全なペアワイズ計算結果を並べてプロットします。この比較は図11に示されています。どちらの手法も良く一致しており、\(g^{(2)}(\tau)\)の値は時間範囲全体にわたって1に近く、これは2つの無相関なソースで予想される値です。

図11. Mokuから収集された\(g^{(2)}(\tau)\)データのプロット。計算は「full」法とTime & Frequency Analyzerの畳み込み近似法の両方を用いて行われた。同じ時間軸上にプロットすると、2つの手法が良好な一致を示している。

畳み込み法とペアワイズ法は、計算手法の違いにより、特に\(\tau \approx 0\)付近で\(g^{(2)}(\tau)\)にわずかな差が生じる可能性があります。畳み込み法はMokuによって得られたビン化されたヒストグラムデータを使用しますが、ペアワイズ法はすべてのイベントペアの組み合わせを明示的に評価します。

どちらの手法も、二次相関を計算するための数学的に有効なアプローチです。ほとんどのアプリケーションでは、どちらの手法も同等の結果をもたらします。ただし、エッジケースや特定の検出器構成によっては、2つの手法の間に若干の違いが生じる可能性があることにご注意ください。

製品概要

2 次相関関数は、光源の時間的ダイナミクスを評価するための強力なツールであり、安全な通信から光子計算に至るまでの量子光学アプリケーションにとって重要です。

Moku Time & Frequency Analyzerを用いて、2つの方法で2次相関関数 \(g^{(2)}(\tau)\) を計算しました。1つ目は、Moku Time & Frequency Analyzerに内蔵された計算機を用いて畳み込み法で関数を生成した方法です。2つ目は、高解像度の時間タグ付き光子イベントを捕捉し、Pythonで解析する方法を示し、完全ペアワイズ法を用いて \(g^{(2)}(\tau)\) を計算する方法です。2つの方法をプロットした結果、良好な一致が得られました。

コヒーレントレーザーを研究する場合でも、単一光子エミッターを研究する場合でも、\(g^{(2)}(\tau)\)を計算する両方の方法に精通していれば、理想的な動作からの偏差を測定し、ソースのパフォーマンスを定量化できるようになります。

参考情報

[1] Chen-How Huang、Yung-Hsiang Wen、およびYi-Wei Liu、「ランダム位相変調を使用した2次相関関数とコヒーレンス時間の測定」、Opt. Express 24、4278-4288(2016)。

アプリケーションノートをダウンロード

Mokuをデモモードで試す

macOSとWindows用のMoku:アプリをダウンロードできます こちら.


よくある質問への回答

デバイスや機器に関する質問と回答は、 ナレッジベース .


Mokuユーザーとつながる

プログラムに参加する(英語) ユーザーフォーラム 新しい機能をリクエストしたり、サポートのヒントを共有したり、世界中のユーザー コミュニティとつながったりできます。

その他のアプリケーションノート

アプリケーションノートの一覧