PHITS とは何か
PHITS(Particle and Heavy Ion Transport code System)は、 放射線が物質の中をどう進み、何とぶつかり、どこにどれだけエネルギーを落とすかを計算するプログラムです。 日本原子力研究開発機構(JAEA)を中心に、高エネルギー加速器研究機構(KEK)や高度情報科学技術研究機構(RIST)などが共同で開発しています。[1] 扱える粒子は光子・電子・中性子・陽子から重イオンまで、エネルギーは熱中性子から TeV 級まで。 粒子線治療の計画、加速器や原子炉の遮蔽設計、宇宙飛行士や航空機乗務員の被ばく評価、 そして検出器の中で何が起きているかの理解に、世界中で使われています。
「計算する」と何がわかるのか
放射線の基礎で見たように、放射線と物質の相互作用は確率で起こります。 1本の陽子がどこで止まるか、1個の光子が検出器を素通りするか吸収されるかは、事前には決まっていません。 PHITS は乱数を振って「起こりうる1例」を最後まで追いかけ、それを何万回も繰り返して平均をとります。 これがモンテカルロ法です。
たとえば「厚さ 5 cm の鉛で Co-60 のγ線はどれくらい減るか」「NaI 検出器に Cs-137 のγ線を当てたら波高分布はどんな形になるか」。 実験をする前に答えの見当がつき、実験のあとには「測った値がもっともらしいか」を確かめられます。 この講座で使うコンソールには、この2つも含めて5つの例(プリセット)が最初から入っています。
線源から出た粒子1個と、そこから生まれた二次粒子すべてを最後まで追いかけた1回分をヒストリーと呼びます。
PHITS の結果はヒストリーあたりの平均値(単位の末尾に付く /source がその意味です)で、
必ず統計誤差が付きます。誤差はおおむねヒストリー数の平方根に反比例するので、
誤差を半分にしたければ4倍回す必要があります(統計の基礎)。
PHITS への「注文書」——入力ファイル
PHITS への指示は、[ Source ](何を撃つか)、[ Material ](どんな物質か)、
[ Surface ] と [ Cell ](どんな形か)、[ T-Track ] などのタリー(何を数えるか)といった
セクションを並べたテキストファイルで行います。本来はこれを手で書くのですが、
とくに [ Cell ] の書き方(面の表裏の組み合わせで領域を定義する)は、最初の大きなつまずきどころです。
この講座で使う PHITS コンソールは、その入力ファイルを画面の操作から組み立ててくれるローカル用の Web アプリです。 形は断面図の上にマウスで描き、線源や材料はフォームで選びます。 ただしできあがった入力ファイルはいつでも画面で読めるようにしてあります。 コンソールは「書かずに済ませる」道具であると同時に、「どう書けばよいか」の見本でもあります。
全体の構図
| もの | 役割 | どこで用意するか |
|---|---|---|
| PHITS 本体 | 計算そのもの。C:\phits に入る | 加速キッチンから入手し(2章)、インストーラで入れる(3章) |
| Ghostscript | PHITS が描く eps 図を png に変換する | PHITS のインストール時に一緒に入る(3章) |
| Python 3.8 以上 | コンソールのサーバを動かす | python.org から(3章) |
| PHITS コンソール | 画面・入力ファイルの組み立て・実行管理・図 | git clone で取ってくる(5章) |
| numpy / matplotlib / Pillow | 論文用の図の書き出し(なくても計算と表示はできる) | pip で(3章・任意) |
やることの順番
この講座は Windows だけで完結します(CORSIKA 講座と違って WSL は使いません)。 それでも「PowerShell に打つもの」と「ブラウザのアドレスバーに入れるもの」「ファイルに書くもの」が混ざるので、 すべてのコマンドブロックに置き場所を書いてあります。
PowerShell / ブラウザ ファイルの中身 出力例
1章のまとめ
- PHITS は物質中の放射線を1粒ずつ追うモンテカルロ計算コード。結果はヒストリーあたりの平均と、その統計誤差。
- 指示は入力ファイルで行う。コンソールはそれを画面操作から組み立て、中身もいつでも見せてくれる。
- 計算は配布版の PHITS がそのまま行う。コンソールは書く・起動する・見せるだけ。
- PHITS 本体は加速キッチンから入手する。
入手する
PHITS は加速キッチンから入手してください。
インストールする
ここからは Windows での手順です。PHITS 自体は Mac や Linux でも動き、コンソールも Linux に対応するよう書かれていますが、 この講座で実機確認したのは Windows 11 だけです。所要 15〜20 分。ディスクは約 11 GB 空けておいてください(核データが大きいためです)。[2]
-
受け取ったパッケージを展開する
パッケージが ZIP の場合は、必ず全体を展開(解凍)してからインストールを始めてください。 ZIP の中をダブルクリックで覗いた状態のまま実行すると失敗します。
展開したフォルダには
win/mac/linuxのフォルダがあり、 それぞれにインストール手順書(PowerPoint / PDF / テキスト)が入っています。Windows ならwinフォルダの手順書が一次資料です。 インストーラの画面は版によって変わることがあるので、この講座では1枚ずつは追わず、手順書に従ってください。 -
インストール先は既定の
C:\phitsのままにするインストールでは圧縮・展開に 7-Zip が使われます。PHITS のパッケージには、Ghostscript(図の表示・変換)、 SumatraPDF(eps の表示)、PHITS-Pad(入力ファイル用エディタ)のインストーラも同梱されています。 Ghostscript は必ず入れてください。コンソールが PHITS の図を png にするのに使います。
インストール先は既定の
C:\phitsから変えないのがおすすめです。 コンソールも既定でここを見に行きますし、日本語や空白を含むパスは、Fortran で書かれたプログラムのトラブルのもとになります。 -
入ったことを確かめる
インストーラは、環境変数
PHITSPATHにC:\phitsを設定し、C:\phits\binを PATH に加えます。 新しく開いた PowerShell で確かめます(インストール前から開いていた窓には反映されていません)。PowerShell $env:PHITSPATH Test-Path C:\phits\bin\phits_win.exe Test-Path C:\phits\XS gswin64c -version出力例 C:\phits True True GPL Ghostscript 10.07.0 (2026-03-16) Copyright (C) 2025 Artifex Software, Inc. All rights reserved.gswin64cが「認識されません」と出ても、C:\Program Files\gs\の下に入っていればコンソールは自分で見つけます(11章)。 Ghostscript のバージョン番号は人によって違ってかまいません。C:\phitsの中身はこうなっています。講座のあとで自分の計算を始めるときに、何度も開くことになる場所です。表3-1 C:\phits の主なフォルダ フォルダ 中身 bin 実行ファイル。 phits_win.exe(シングル版)、phits_openmp_win.exe(並列版)、phits.bat、図を描くangelmanual ユーザーマニュアル(日本語・英語)。困ったときの最優先の資料 lecture 公式講習会の資料と入力ファイル。 basic\lec01から順に進めるのが公式の推奨ルートrecommendation 用途別の推奨設定の入力例。自分の計算に近いものを探して改造するのが近道 sample 機能ごとのサンプル入力 XS, data 核データ・原子データ。容量の大部分はここ -
Python を入れる
コンソールのサーバは Python で動きます。python.org から Windows 用のインストーラ(3.8 以上ならどれでも)を入れてください。 最初の画面で 「Add python.exe to PATH」にチェックを入れるのを忘れないように。
PowerShell python --version出力例 Python 3.10.10サーバ本体は標準ライブラリだけで動くので、ここで止めても計算と PHITS の図の表示はできます。 論文や発表に使う図を matplotlib で書き出したい場合だけ、次を追加します。
PowerShell python -m pip install numpy matplotlib pillow
素の PHITS で1回動かす
コンソールを入れる前に、PHITS 単体で計算が通ることを確かめておきます。
あとで何かうまくいかなかったとき、「PHITS の問題か、コンソールの問題か」を切り分けられるようになります。
題材は公式講習会の最初の入力 lec01.inp(水の球に 150 MeV の陽子を撃つ)です。
-
作業用フォルダにコピーして実行する
PHITS は入力ファイルと同じフォルダに結果を書き出します。
C:\phitsの中を散らかさないよう、コピーしてから回します。PowerShell mkdir $HOME\phits-work\lec01 cd $HOME\phits-work\lec01 copy C:\phits\lecture\basic\lec01\lec01.inp . phits.bat lec01.inp出力例 Started with input= "lec01.inp" Program is started on 2026/09/24 at 10h 58m 00s Initialization is completed on 2026/09/24 at 10h 58m 00s bat[ 1] ncas = 50. on 2026/09/24 at 10h 58m 00s bat[ 2] ncas = 100. on 2026/09/24 at 10h 58m 00s Program is finished on 2026/09/24 at 10h 58m 00s Calculation finishedエクスプローラで
lec01.inpをC:\phits\bin\phits.batにドラッグ&ドロップしても同じことができます。公式資料ではこちらのやり方が紹介されています。 -
出てきたファイルを確かめる
PowerShell dir -Name出力例 batch.out lec01.inp phits.out track_xz.eps track_xz.out track_xz_err.eps track_xz_err.outphits.outは計算の要約(バージョン、使った時間、警告)、*.outはタリーの数値、*.epsはそれを PHITS 付属の ANGEL が描いた図です。track_xz.epsを開くと、陽子が水の中で止まるまでの飛跡の図が見えるはずです。 ここまで通れば PHITS 側の準備は完了です。
コンソールを導入する
PHITS コンソールは GitHub に置いてあります。git clone して python server.py で起動し、ブラウザで開く——これだけです。
ビルドも、サーバ本体のための pip install もありません。[7]
-
コンソールを取ってくる(一度だけ)
gitが入っていなければ、先に Git for Windows を入れるか、winget install --id Git.Gitで入れてください。 置き場所はホームフォルダの直下にします(OneDrive で同期されるフォルダや、日本語を含むパスは避けます)。PowerShell cd $HOME git clone https://github.com/jedipuppy/phits-console.git cd phits-console dir -Name出力例 phitscon presets static tests .gitattributes .gitignore config.example.json plan.html plot_phits.py README.md server.py表5-1 取ってきたものの中身 ファイル 役割 server.py 本体。画面を配り、入力ファイルを組み立て、PHITS を起動して結果を返す phitscon/ 中身の部品。 inpgen.py(設定 →phits.inp)、jobs.py(順番待ち・実行・履歴)、outparse.py(タリー出力の読み取り)、materials.py(組み込み材料)static/ ブラウザに表示される画面そのもの presets/ 最初から入っている5つの例(7章) plot_phits.py eps → png の変換と matplotlib の作図。コンソールを使わず単体でも動く config.example.json PHITS の場所などを変えたいときの設定の雛形(ふつうは不要) plan.html 設計書。コンソールが何をどう判断しているかを知りたくなったら 🔄 更新するときコンソールは手が入り続けます。この講座の説明と画面が食い違うと感じたら、まずこれを実行してください。
PowerShell cd $HOME\phits-console git pull -
サーバを起動する
PowerShell cd $HOME\phits-console python server.py起動すると、見つけたものの一覧が出ます。この窓は開いたままにしておきます(閉じるとサーバも止まります)。
出力例 PHITS Console 0.1.0 → http://localhost:8766 OS : windows PHITS : C:\phits\bin\phits_win.exe Ghostscript : C:\Program Files\gs\gs10.07.0\bin\gswin64c.EXE matplotlib : 3.10.8 (C:\Users\<ユーザー名>\AppData\Local\Programs\Python\Python310\python.exe) runs : C:\Users\<ユーザー名>\phits-console\runs 同時実行数 : 2(config.json の max_concurrent) Ctrl+C で停止見るべきは
PHITSとGhostscriptの行です。 ここがNOT FOUNDなら、3章のインストールか、次の設定ファイルを見直します。matplotlibがNOT FOUNDなのは、任意の手順を飛ばしただけなので問題ありません。⚙️ PHITS をC:\phits以外に入れた場合 ——config.jsonconfig.example.jsonをconfig.jsonという名前でコピーし、phits_pathを書き換えます。nullのままの項目は自動で探します。パスの区切りは/で書くのが安全です。phits-console\config.json { "phits_path": "D:/tools/phits", "ghostscript": null, "max_concurrent": 2, "omp_threads": 0, "port": 8766 } -
ブラウザで開く
Edge でも Chrome でもかまいません。アドレスバーに次を入れます。
ブラウザのアドレスバー http://localhost:8766
図5-1 ヘッダ右上の状態表示。 PHITS と Ghostscript が緑なら準備完了です。「実行中 0 / 2」は、いま走っている本数と同時に走らせられる上限です。 8766 番が他とぶつかるなら
python server.py 8800のように起動時に変えられます(ブラウザ側の番号も同じだけ変えてください)。 -
毎回の起動をダブルクリックにする(任意)
次の3行を
phits-console.batという名前でデスクトップに保存すると、ダブルクリックでサーバとブラウザが立ち上がります。phits-console.bat cd /d %USERPROFILE%\phits-console start "" http://localhost:8766 python server.pyブラウザのほうが先に開くので、最初は「接続できません」と出るかもしれません。数秒待って再読み込みしてください。 止めるときは黒い窓で Ctrl+C。
サーバは 127.0.0.1(自分自身)でしか待ち受けません。同じ PC のブラウザからは見えますが、LAN の他のマシンからは見えません。
認証の仕組みが無いので、設定を変えて外に公開しないでください。
画面の見取り図
開くとこうなります。左で「何を撃ち、何を数えるか」を決め、中央で「形」を描き、右で「実行」します。下に履歴が並びます。
| 場所 | すること |
|---|---|
| ★ 状態表示 | PHITS・Ghostscript・matplotlib が見えているか、いま何本走っているか |
| ① 設定タブ | 線源(粒子・エネルギー・形・向き)/材料/タリー(何を数えるか)/計算条件(ヒストリー数・物理・乱数)/プリセット(例の読み込みと、自分の設定の保存) |
| ② ツールバー | 描く形(直方体・球・円柱・円錐台・楕円体)、線源とタリー範囲の描画、距離の計測。XZ / XY / YZ の断面の切り替えと、断面の位置 |
| ③ 断面キャンバス | 形を描き、ドラッグで動かし、ハンドルで大きさを変える。PHITS と同じ規則で塗り分けてある |
| ④ 3D プレビュー | 描いた形の立体図。ドラッグで回転、ホイールで拡大縮小。「断面で切る」で③の位置で切り欠く |
| ⑤ レイヤーとプロパティ | 形の一覧(上にあるものほど前面=優先)と、選んだ形の寸法・材料・密度を数値で直す場所 |
| ⑥ 実行 | 実行名をつけて ▶ 実行。スイープ(10章)。「断面図」「3D 図」で PHITS 自身に形を描かせて確認(8章)。所要時間の目安も出る |
| ⑦ 入力ファイル | いまの設定から組み立てた phits.inp。触るたびに作り直される。コピー・保存もできる |
| ⑧ ログ | 実行中の PHITS の出力と、バッチ単位の進捗バー |
| ⑨ 履歴 | 過去の実行の一覧。開くと結果、チェックを2つ以上入れると比較(9章・10章) |
覚えておくと速いキー操作
| キー | 動作 |
|---|---|
| V R S C T E | 選択 / 直方体 / 球 / 円柱 / 円錐台 / 楕円体 |
| B M D | 線源を描く / タリーの範囲を描く / 距離を測る |
| F、1 2 3 | 全体を表示、XZ / XY / YZ の切り替え |
| Del、Ctrl+D | 選んだ形を削除、複製 |
| Ctrl+Z / Ctrl+Y | 元に戻す / やり直す |
| 矢印キー、Alt | 少しずつ動かす、ドラッグ中はスナップ(目盛りへの吸着)を切る |
| 右ドラッグ・Space+ドラッグ、ホイール | 画面の移動、拡大縮小 |
| 同じ場所をもう一度クリック | 重なって奥にある形に選択が移る |
最初の計算 —— ブラッグピーク
最初は組み込みの例から始めます。150 MeV の陽子を、40 cm の水の箱に撃ち込む計算です。 陽子のような重い荷電粒子は、止まる直前にいちばん多くエネルギーを落とします。この山がブラッグピークで、 陽子線治療が「がんの位置でだけ強く効く」ことの根拠になっています(放射線の基礎)。
-
プリセットを読み込む
左の「プリセット」タブを開き、いちばん上の「陽子線のブラッグピーク(水ファントム)」の「読み込む」を押します。 いまの設定は置き換わりますが、元に戻す(Ctrl+Z)で戻せます。
表7-1 組み込みのプリセット 名前 中身 陽子線のブラッグピーク(水ファントム) 150 MeV 陽子 → 水。2D の飛跡と深部線量。公式講習会 lec01 相当 鉛板による光子の遮蔽 1.25 MeV 光子(Co-60 相当)→ 5 cm の鉛板。透過スペクトルと 2D フルエンス コンクリートによる中性子の遮蔽 14 MeV 中性子(D-T 核融合)→ 50 cm のコンクリート。減衰と透過スペクトル NaI 検出器の応答(波高分布) 662 keV 光子(Cs-137 相当)→ 3 インチ NaI。付与エネルギー分布(EGS5 を使用) 炭素線のブラッグピーク 290 MeV/n の ¹²C → 水。陽子より鋭いピークと、原子核の破砕による「しっぽ」 -
左の4つのタブを見ておく
読み込んだ中身を、タブごとに確認します。ここで決めていることが、そのまま入力ファイルの各セクションになります。
図7-1 設定の4つのタブ(左から 線源・材料・タリー・計算条件)。 分かりにくい項目には、画面の中に短い説明が書いてあります。 線源 [ Source ]proton · 150 MeV · s-type 1何を・どれだけの勢いで・どこから・どちら向きに撃つか。 粒子(
proj)は陽子・中性子・光子・電子から重イオンまで。エネルギー(e0)の単位は MeV/n(核子あたり)で、陽子なら MeV と同じです。 形(s-type)は 1 が z 軸に平行な円柱で、半径r0 = 0.5cm の細いビームにしてあります。ここに注意炭素線などの重イオンでは
e0が核子あたりなので、290 MeV/n の ¹²C の全エネルギーは 12 倍の 3480 MeV です。材料 [ Material ]mat[1] = 水組み込みの 16 種(水・空気・コンクリート・鉛・鉄・NaI・軟組織・骨など)から選ぶか、「カスタム組成」で元素と比率を入れます。 密度は材料ごとの既定値があり、形ごとに上書きもできます。
タリー [ T-Track ] [ T-Deposit ]2 個何を数えて、どう並べて出すか。このプリセットには2つ入っています。
#1 T-Track・xz:粒子が通った長さを数える=フルエンス(単位 1/cm²/source)。xz 断面の 2D マップになる#2 T-Deposit・z:落としたエネルギーを数える=線量(単位 Gy/source)。深さ方向の 1D グラフになる
ここに注意「範囲をジオメトリから自動で決める」にチェックがあると、描いた形に合わせてメッシュの範囲が決まります。形を変えたら範囲も追随します。
計算条件 [ Parameters ]1000 × 5 = 5,000maxcasが1バッチあたりの粒子数、maxbchがバッチ数で、その積が総ヒストリー数です。進捗はバッチ単位で出ます。negsは電子・光子をどこまで追うか(EGS5 を使うかどうか)、rseedは乱数の種、OpenMP は並列版を使うスレッド数です。ここに注意最初は総ヒストリー数を小さくして形と設定が正しいことを確かめ、それから増やすのが鉄則です。右の「実行」欄に、直近の実行から見積もった所要時間の目安が出ます。
-
入力ファイルを覗く
右の「入力ファイル」欄(⑦)には、いまの設定から作った
phits.inpが表示されています。 何か設定を触るたびに作り直されるので、「この項目を変えると入力ファイルのどこが変わるか」をその場で見られます。 PHITS の入力を覚えたい人は、ここを横目で見ながら操作するのがいちばんの近道です。🪄 オレンジの注意書きは、コンソールが自動で直したところこのプリセットでは「線源 1 が境界面 z=-20. に乗っていたので -0.001 cm ずらしました」と出ます。 線源がちょうど形の表面にあると、PHITS はどちら側の領域から始めればよいか判断できずエラーになるので、ほんの少しだけ外にずらしています。 こうした調整は必ずここに表示されます。
-
実行する
右上の「実行名」に名前(例:
water-150)を入れて ▶ 実行を押します。空欄なら日時から自動で名前が付きます。 ログ欄(⑧)に進捗バーが出て、PHITS の出力が流れます。この例なら数秒で終わります。
図7-2 実行中の右列。 ログの bat[ 7] ncas = 35000.は「7 バッチ目まで終わり、累計 35,000 ヒストリー」という意味です。 (この図は 8 章の、ヒストリー数を 100,000 に増やした計算のものです。)終わると下の履歴(⑨)に「完了」として並びます。名前をクリックすると結果が開きます。読み方は9章で説明します。
形を描く —— 骨の板を入れる
次は自分で形を足します。水の中、ビームの通り道に厚さ 4 cm の骨の板を置いて、ブラッグピークがどう動くかを調べます。 体の中に骨があると陽子の止まる位置がずれる——治療計画で実際に問題になる話です。
-
材料を足す
「材料」タブで「+ 材料を追加」を押し、種類を「骨(皮質骨 ICRU)」にします。
mat[2]ができ、密度 1.92 g/cm³ と元素組成が自動で入ります。 -
直方体を描く
ツールバーの「直方体」(R)を選び、キャンバスの水の箱の上でドラッグして四角を描きます。 位置は大ざっぱでかまいません。描いた直後はその形が選ばれていて、下の「プロパティ」欄(⑤)に寸法が出ます。 ここで数値を正確に直します。
表8-1 入れる値 項目 値 意味 名前 bone slab入力ファイルのコメントと凡例に出る xmin, xmax -5,5ビーム(x = 0)を挟んで幅 10 cm ymin, ymax -5,5奥行きも 10 cm zmin, zmax -14,-10入射面(z = −20)から深さ 6〜10 cm、厚さ 4 cm 材料 mat[2] boneさっき足した骨
図8-1 骨の板を描いたところ。 レイヤー一覧で bone slabがwater phantomより上にあります。 上にある形ほど優先されるので、重なった部分は骨になります。 -
「上ほど前面」——セルの式を書かなくてよい理由
手で入力を書くなら、水の領域は「箱 1 の内側、かつ箱 2 の外側」と書かなければいけません。 コンソールは、この「くり抜き」をレイヤーの順番から自動で作ります。⑦ の入力ファイルの
[ Cell ]を見ると、実際にそうなっています。phits.inp(コンソールが書いたもの・抜粋) [ Surface ] 1 RPP -10 10 -10 10 -20 20 $ water phantom 2 RPP -5 5 -5 5 -14 -10 $ bone slab 999 RPP -20 20 -20 20 -30 30 $ world [ Cell ] 101 1 -1 -1 2 $ water phantom ← 面1の内側(-1) かつ 面2の外側(2) 102 2 -1.92 -2 $ bone slab ← 材料2、密度1.92、面2の内側 900 0 -999 1 2 $ void inside the world 901 -1 999 $ outer voidセルの2列目が材料番号(0 は真空、−1 は計算の外)、3列目が密度(負の値は g/cm³)、その後ろが領域の条件です。
worldは、すべての形と線源とタリー範囲を囲む箱として自動で作られます(余白は「計算条件」タブで変えられます)。 -
PHITS 自身に描かせて確かめる
画面の塗り分けは PHITS と同じ規則で計算していますが、最後に信じるべきは PHITS 自身の解釈です。 「実行」欄の「断面図」を押すと、PHITS をジオメトリ確認モード(
icntl = 7)で走らせて、いまの断面を描かせます。 「3D 図」ならicntl = 11の立体図です。どちらも数秒で出ます。
図8-2 「断面図」(icntl = 7)。セル番号 101・102・900 が書き込まれます。
図8-3 「3D 図」(icntl = 11)。断面で切り欠いた立体を PHITS が描きます。 🧱 形がおかしいまま長い計算を回さない形の定義に隙間や重なりの矛盾があると、PHITS は粒子を見失って警告を出したり止まったりします。 結果の欄にも「ジオメトリエラー」の件数が出ます(0 でなければ形を見直す)。 形を変えたら、まず「断面図」。これを習慣にしてください。
-
統計を増やして実行する
ピークの位置を比べたいので、今度はヒストリー数を増やします。「計算条件」で
maxcas = 5000、maxbch = 20(総ヒストリー 100,000)にし、 タイトルをProton beam with bone slab、実行名をboneにして ▶ 実行。手元の PC で約 20 秒でした。比べる相手も作っておきます。骨の板を選んで Del で消し、同じヒストリー数のまま実行名
waterでもう1本回します (骨の板は Ctrl+Z か、履歴の「設定を読込」でいつでも戻せます)。
8章のまとめ
- 形はキャンバスで描き、寸法はプロパティ欄で数値で直す。材料は先に材料タブで足しておく。
- レイヤーは上ほど優先。重なりのくり抜きはコンソールがセルの式にしてくれる。
- 形を変えたら、PHITS 自身の「断面図」で確認してから本番を回す。
結果を読む
履歴(⑨)で実行名をクリックすると、その下に結果が開きます。
上から順に見るところ
- ジオメトリエラーが 0 か。0 でなければ、ほかの数字を読む前に形を直します(8章)。
- ANGEL の図(PHITS 純正)。PHITS 付属の ANGEL が描いた図を png にしたもので、論文や公式講習会と同じ見た目です。クリックで拡大、
epsで元の図を落とせます。_errが付いた図は相対誤差の分布です。 - インタラクティブ表示。同じ
.outの数値をブラウザで描き直したものです。色の尺度(対数 / 線形)、色の範囲、カラーマップを変えられ、境界線(形の輪郭)を重ねられます。 - 1D のプロファイル。クリックした点を通る線の上の値です。縦棒が統計誤差。ばらつきが大きい場所は、ヒストリーが足りていない場所です。
単位の「/source」をどう読むか
深部線量のタリーの単位は Gy/source、つまり陽子1個あたりの線量です。
実際のビームの線量にしたければ、撃った陽子の数を掛けます。たとえばピークの値が $2.5\times10^{-10}$ Gy/source なら、
$10^{9}$ 個の陽子で約 0.25 Gy です。
またこのタリーは、ビームを中心とする 4 cm × 4 cm の柱の中の平均であることにも注意してください(入力ファイルの [ T-Deposit ] の xmin〜ymax)。
柱の太さを変えれば値も変わります。
持ち出す
| ボタン・欄 | すること |
|---|---|
| 設定をエディタに読込 | この実行の設定を画面に戻す。少し変えてもう1本、のときに |
| ログを表示 / 入力ファイル / phits.out | そのときの PHITS の出力・使った phits.inp・計算の要約を開く |
| ZIP | この実行のファイル一式をまとめて落とす |
| matplotlib で書き出し | png / pdf / svg で図を作る。「CSV も」で数値も一緒に出る(matplotlib が必要) |
| メモ・タグ | 「何のために回したか」を書き残す。履歴の絞り込みにも使える |
ファイルの実体は phits-console\runs\<実行名>\ にあります。
project.json(画面の設定)、phits.inp、run.log、タリー出力(*.out・*.eps・*.png)が1回分ずつまとまっています。
phits.inp はそのまま phits.bat に渡しても同じ計算ができます(4章)。
比べる —— 比較とスイープ
シミュレーションの結果は、1本だけ眺めてもあまり語りません。条件を1つだけ変えた2本を並べることで、初めて「何が効いているか」が見えます。
10.1 骨あり・骨なしを重ねる
履歴で bone と water の左端にチェックを入れ、右上の「選択を比較」を押します。
タリーで t2_deposit_z.out を選び、「縦軸 対数」を外すと、2本の深部線量が重なります。
- ピークが手前にずれる。骨なしのピークは z ≈ −4.6 cm(入射面から 15.4 cm)、骨ありは z ≈ −7.4 cm。差は約 2.8 cm です。
- 骨 4 cm ≒ 水 6.8 cm。骨は水より陽子を止める力が強いので、4 cm の骨を通るあいだに水 6.8 cm 分のエネルギーを失います。この比(約 1.7)を水に対する阻止能比と呼び、陽子線治療の計画では CT の画像からこれを見積もって止まる位置を合わせています。
- 骨の中では線量が少し下がる。z = −14〜−10 cm で青い線がわずかに低いのは、線量(Gy = J/kg)が「質量あたり」だからです。骨は密度が水の 1.92 倍あるので、同じだけエネルギーを落としても1 kg あたりでは小さくなります。
- 読み取りの細かさはビンの幅まで。このタリーは 40 cm を 100 分割(0.4 cm 刻み)しているので、ピーク位置の読みは ±0.2 cm 程度です。もっと細かく知りたければ、ビンを細かくしてヒストリーを増やします。
10.2 エネルギーを振る —— スイープ
「エネルギーを変えるとピークはどこまで動くか」のように、1つの値を何通りか試したいときはスイープを使います。 骨なしの設定のまま、「実行」欄の「スイープ…」を押します。
50:250:5(50 から 250 まで 5 点)のようにも書けます。最大 50 本です。
「振るパラメータ」に線源エネルギー、値に 100, 150, 200 を入れて「実行を積む」を押すと、3本が順番待ちに入り、同時実行数の上限(既定 2 本)ずつ走ります。
振れるのはエネルギーのほか、粒子の種類、各形の寸法・材料・密度、乱数の種です。
終わったら履歴のどれかの「スイープ比較」を押します。
| エネルギー | ピークの深さ(この計算) | 水中の CSDA 飛程(NIST PSTAR) |
|---|---|---|
| 100 MeV | 約 7.3 cm | 7.72 g/cm² |
| 150 MeV | 約 15.4 cm | 15.77 g/cm² |
| 200 MeV | 約 25.7 cm | 25.96 g/cm² |
水の密度は 1 g/cm³ なので、右の列はそのまま cm と読めます。[4] CSDA 飛程は「エネルギーを連続的に失いながら止まるまでに進む平均の道のり」で、ピークはその少し手前に来ます。 PHITS の結果が、独立に測定・評価された値と数 % 以内で合っている——こうして既知の値と突き合わせて、自分の設定が正しいことを確かめるのが、シミュレーションを使うときの基本動作です。
① 骨の板を「鉛」や「空気」に変えると、ピークはどちらにどれだけ動くか。 ② 骨の板の厚さ(zmin)をスイープで 1, 2, 4, 8 cm と振り、ずれの大きさが厚さに比例するか確かめる。 ③ プリセットの「炭素線のブラッグピーク」と陽子のピークを比較し、形の違い(鋭さとピークの後ろの「しっぽ」)の理由を考える。
うまくいかないとき
まず4章の手順で素の PHITS が動くかを確かめると、PHITS の問題かコンソールの問題かが切り分けられます。
| 症状 | 原因 | 対処 |
|---|---|---|
python が「認識されません」/ Microsoft Store が開く | Python が PATH に入っていない | インストーラを再実行して「Add python.exe to PATH」を入れる。py server.py でも起動できる |
起動時に PHITS : NOT FOUND/ピルが赤い | PHITS が C:\phits に無い、または PHITSPATH が未設定 | config.json の phits_path に実際の場所を書く(5章) |
Ghostscript : NOT FOUND/PHITS の図が出ない | Ghostscript が入っていない | PHITS のインストーラから入れ直すか、ghostscript.com から 64 bit 版を入れる。config.json の ghostscript で場所を指定してもよい |
| 「matplotlib で書き出し」だけ失敗する | matplotlib が入っていない | python -m pip install numpy matplotlib pillow(3章) |
| ブラウザが「接続できません」 | サーバが起動していない/窓を閉じた | PowerShell の窓を確認。閉じていたら python server.py をやり直す |
Address already in use | 8766 番を他が使っている/前のサーバが残っている | python server.py 8800 のように別のポートで起動する |
| ジオメトリエラーが 0 でない/PHITS が途中で止まる | 形の定義の矛盾、線源が形の外や境界にある | 「断面図」で形を確認。phits.out の末尾に原因が書いてある |
| いつまでも終わらない | ヒストリー数が多すぎる、重い物理設定(EGS5 など) | 「中止」を押し、総ヒストリーを 1/10 にして所要時間を測ってから増やす。「計算条件」の OpenMP で並列にもできる |
| 実行を削除して同じ名前で回し直したら、対話的な図だけ古いまま | ブラウザが前の実行の数値を覚えている(コンソール 0.1.0 の既知の動作) | ページを再読み込み(F5)する。実行名を毎回変えれば起きない。ANGEL の図とファイルは正しく新しいものになっている |
| 画面に説明どおりの項目が無い | コンソールが古い | git pull(5章) |
git clone で認証を求められる/not found | リポジトリにアクセスする権限が無い | 講座の担当者に連絡する |
環境ができたあと、毎回使うのはこれだけ
cd $HOME\phits-console
python server.py # → ブラウザで http://localhost:8766
git pull # ときどき:コンソールを更新
記録と引用
シミュレーションの結果は、同じ入力・同じバージョン・同じ乱数の種がそろえば再現できます。 逆にいえば、そのどれかを記録し忘れると、あとで自分でも同じ図を作れなくなります。
実験ノートに残しておく項目
- PHITS のバージョン。結果の欄の「PHITS ver.」、または
phits.outの冒頭(この講座では 3.360)。 - 入力ファイルそのもの。
runs\<実行名>\phits.inpを保存しておく。画面の設定はproject.json。 - 総ヒストリー数と乱数の種。
maxcas × maxbchとrseed。 - 何のために回したか。結果の欄の「メモ・タグ」に書いておけば、履歴で絞り込めます。
- コンソールのバージョン。起動時に出る番号(0.1.0 など)。
git log -1のコミット番号があれば確実。
発表・論文で引用するもの
PHITS を使った結果を発表するときは、PHITS のホームページで指定されている論文を引用します。 2026年9月時点では次の論文です。[1] コンソールは入力を作るための道具なので、方法の欄に「入力ファイルの作成にはブラウザ上のツールを使った」程度に書けば十分です。
“Recent improvements of the Particle and Heavy Ion Transport code System – PHITS version 3.33”. doi:10.1080/00223131.2023.2275736
この講座の記述をどこまで信じてよいか
画面と数値はすべて、2026-09-24 に PHITS 3.36 とコンソール 0.1.0 の実機で撮ったものです。
コンソールは開発が続いているので、ボタンの名前や配置は変わりえます。
PHITS の物理や入力の意味について迷ったら、この講座ではなく C:\phits\manual のマニュアルが正です。
一次資料・参考文献
迷ったら、まずここに挙げた一次資料に戻ってください。
PHITS 公式ホームページ 最新版の情報、講習会の予定、マニュアル、フォーラム、引用すべき論文。 phits.jaea.go.jp PHITS Simulation Console — この講座で使うコンソール ローカル用の Web コンソール。git clone して python server.py で起動します。必要なもの・設定項目・既知の制限は README に、設計の全体像は plan.html にまとまっています。
github.com/jedipuppy/phits-console
PHITS 講習会資料の読み上げ動画(YouTube)
配布パッケージの lecture フォルダの資料を解説した公式動画。この講座のあとに入力ファイルを自分で書けるようになりたい人は、basic の lec01〜03 から。
youtube.com — PHITS
- PHITS: T. Sato et al., “Recent improvements of the Particle and Heavy Ion Transport code System – PHITS version 3.33”, J. Nucl. Sci. Technol. 61 (2024) 127–135. doi:10.1080/00223131.2023.2275736
- インストールの前提: PHITS 配布パッケージ同梱
readme-jpn.txt「PHITS スタートアップマニュアル」(動作環境・必要なディスク容量・インストール方法・アンインストール方法) - 入力の書式・物理モデル: PHITS User's Manual(配布パッケージの
manualフォルダ、および phits.jaea.go.jp/manual/) - 水中の陽子の CSDA 飛程: M. J. Berger et al., ESTAR, PSTAR, and ASTAR, NIST Standard Reference Database 124. physics.nist.gov — PSTAR
- Ghostscript: ghostscript.com
- Python: python.org — Python Releases for Windows
- コンソール: PHITS Simulation Console 0.1.0, GitHub. github.com/jedipuppy/phits-console(最終参照 2026-09-24)