[ User Defined Interaction ], [ User Defined Particle ] セクション ==================================================================== このセクションは、ユーザーが定義した相互作用または粒子を利用するためのセクションです。 - 詳細は ``/phits/utility/UserDefinedModel/readme-jp.pdf`` を参照してください。 - 現在、電子、陽電子および光子で User Defined Interaction を使用する場合は **EGS5** を使用する必要があります( **negs=1, 2** )。 - 設定可能なユーザー定義粒子の kf-code 値の範囲は :math:`900000 \le \mathrm{kf} \le 999999` または :math:`-999999 \le \mathrm{kf} \le -900000` です。 ``/phits/src/`` フォルダに関連する以下の3種類のファイルがあります。 1. ``udm_int_.f90`` ユーザーが定義した相互作用の情報(断面積など)が書かれたモジュールが定義されたソースファイル。 ファイル名の ```` の部分は、ユーザーが任意に決められます。 ``udm_int_sample.f90`` は初めから ``/phits/src/`` フォルダに入っています。 このサンプル・ソースでは、100 MeV 以上の電子または陽電子が、原子番号 :math:`Z` の物質と :math:`Z\times 10^{-6}` barn の断面積で相互作用し、ユーザー定義粒子を1つ放出します。 2. ``udm_part_.f90`` ユーザーが定義した粒子の情報(質量、寿命、分岐比など)が書かれたモジュールが定義されたソースファイル。 ファイル名の ```` の部分は、ユーザーが任意に決められます。 ``udm_part_sample.f90`` は初めから ``/phits/src/`` フォルダに入っています。 このサンプルコードでは、電子ニュートリノに崩壊するユーザー定義粒子を定義します。 その質量と寿命はインプットファイルで指定できます。 3. ``udm_manager.f90`` 使用するモジュールを指定するファイル。 以下は、 **[ User Defined Interaction ]** の入力例です。 .. code-block:: text :caption: **[ User Defined Interaction ]** セクションの例題(1) [ User Defined Interaction ] $ Name Bias Parameters my_interaction 1.0e+5 900000 この入力例は、初めから入っている ``udm_int_sample.f90`` を動かすためのインプットファイルです。 第1、第2引数は、使用するモジュールの **Name** とバイアス値を入力します。 例えば、 ``my_interaction`` は、 ``udm_int_sample.f90`` で定義されている ``udm_int_sample`` モジュールの **Name** 変数に代入された文字列と同じものです。 バイアスの値を1以上にすることで、断面積の小さいプロセスの発生頻度を上げることができます。 その場合、発生粒子の重みは自動で調整されるため、平均的な最終結果はバイアスの値に依りません。 第3引数では0個以上のパラメータ値を入力できます。 使用するパラメータの個数や意味は、使用するソースファイルに依存します。 ``udm_int_sample`` モジュールの場合、パラメータ値の1番目は、生成するユーザー定義粒子の kf-code です。 以下は、 **[ User Defined Particle ]** の入力例です。 .. code-block:: text :caption: **[ User Defined Particle ]** セクションの例題(1) [ User Defined Particle ] $ Name kfcode Parameters my_particle 900000 1.0 1e-8 この入力例は、初めから入っている ``udm_part_sample.f90`` を動かすためのインプットファイルです。 第1、第2引数は、使用するモジュールの **Name** と、このファイルで扱う粒子の kf-code を入力します。 例えば、 ``my_particle`` は、 ``udm_part_sample.f90`` で定義されている ``udm_part_sample`` モジュールの **Name** 変数に代入された文字列と同じものです。 第3引数では0個以上のパラメータ値を入力できます。 使用するパラメータの個数や意味は、使用するソースファイルに依存します。 ``udm_part_sample`` モジュールの場合、パラメータ値の1、2番目は、ユーザー定義粒子の質量(MeV)と寿命(秒)です。 ``udm_part_.f90`` ファイルはユーザー定義粒子だけでなく、既存の粒子の性質(寿命や分岐比)を変更することもできます。 .. _user_code_app: ユーザーコードの応用例 ---------------------------------------------------------------------- 例1: 陽電子起因のミューオン対生成 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :math:`e^+e^-_{\rm atomic}\to\mu^+\mu^-` ユーザーコード: ``udm_int_ee2mumu.f90`` 使用方法: .. code-block:: text :caption: **[ User Defined Interaction ]** セクションの例題(2) [ User Defined Interaction ] $ Name Bias Parameters ee2mumu 1.0e+5 例2: ニュートリノ反応 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ データベースを読み込むことで、より幅広いニュートリノ反応を生成できます。 データベースの例を以下のURLからダウンロードできます。 https://rcwww.kek.jp/research/shield/sakaki/phits/temp.html ユーザーコード: ``udm_int_neutrino.f90`` 使用方法: .. code-block:: text :caption: **[ User Defined Interaction ]** セクションの例題(3) [ User Defined Interaction ] $ Name Bias Parameters neutrino 1 <データベースフォルダの絶対パスまたは相対パス> 例3: 指定の領域または粒子にのみエネルギーカットオフを適用する ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ユーザーコード: ``udm_int_kill.f90`` 使用方法: **** に対応する粒子を、領域番号 ```` において、エネルギーが ```` 未満で輸送したくない場合、これら3つの値を **Parameters** の部分に繰り返し書きます。 **Bias** の数値は無視されます。 .. code-block:: text :caption: **[ User Defined Interaction ]** セクションの例題(4) [ User Defined Interaction ] $ Name Bias Parameters kill 1 ... 記入例1: 電子(kf=11)を領域 101 でエネルギーが 500 MeV 未満の場合、および中性子(kf=2112)を領域 102 でエネルギーが 100 MeV 未満の場合輸送しません。 **kf=0** はすべての粒子を意味します。 .. code-block:: text :caption: **[ User Defined Interaction ]** セクションの例題(5) [ User Defined Interaction ] $ Name Bias Parameters kill 1 11 101 500 2112 102 100 記入例2: 各行に `` `` の情報が書き込まれたデータファイルを用意します。 **Parameters** の部分にそのファイルの相対パスまたは絶対パスを記述します。 .. code-block:: text :caption: **[ User Defined Interaction ]** セクションの例題(6) [ User Defined Interaction ] $ Name Bias Parameters kill 1 emin.txt ``emin.txt`` の中身の例(数値が3つ並んでいない行はスキップされる): .. code-block:: text :caption: ``emin.txt`` の例 # kf reg emin 11 101 100 -11 101 100 2212 102 50 0 103 30