加速キッチンbasics
実習講座 / Simulation PHITS

放射線の飛び方を計算する

放射線が物質の中をどう進み、どこでエネルギーを落とすのか。 検出器の中で起きていることも、遮蔽の厚さも、粒子線治療の狙いも、この問いに答えられれば見通せます。 それを1粒ずつ計算機の中で追いかける道具が、日本で開発された PHITS(ふぃっつ)です。 この講座では、PHITS の入手とインストールから始めて、 入力ファイルを手で書かずに済むブラウザのコンソールを導入し、 陽子線のブラッグピークを題材に「形を描く → 計算する → 図を読む → 比べる」までを、実際の画面で追いかけます。

Level大学1・2年〜
所要準備30分+実行
前提「放射線の基礎」
方式
ブラウザのコンソール入力ファイルを手で書かない
対象バージョン
PHITS 3.36Windows 版の配布バイナリ
必要なもの
Windows 10/11 + 空き 11 GBPython 3.8 以上・Ghostscript
最終確認
2026-09-24PHITS 3.36 + コンソール 0.1.0 の実機で確認
01

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つの例(プリセット)が最初から入っています。

🎲 「ヒストリー」と「誤差」——モンテカルロ計算の2つの言葉

線源から出た粒子1個と、そこから生まれた二次粒子すべてを最後まで追いかけた1回分をヒストリーと呼びます。 PHITS の結果はヒストリーあたりの平均値(単位の末尾に付く /source がその意味です)で、 必ず統計誤差が付きます。誤差はおおむねヒストリー数の平方根に反比例するので、 誤差を半分にしたければ4倍回す必要があります(統計の基礎)。

PHITS への「注文書」——入力ファイル

PHITS への指示は、[ Source ](何を撃つか)、[ Material ](どんな物質か)、 [ Surface ] と [ Cell ](どんな形か)、[ T-Track ] などのタリー(何を数えるか)といった セクションを並べたテキストファイルで行います。本来はこれを手で書くのですが、 とくに [ Cell ] の書き方(面の表裏の組み合わせで領域を定義する)は、最初の大きなつまずきどころです。

この講座で使う PHITS コンソールは、その入力ファイルを画面の操作から組み立ててくれるローカル用の Web アプリです。 形は断面図の上にマウスで描き、線源や材料はフォームで選びます。 ただしできあがった入力ファイルはいつでも画面で読めるようにしてあります。 コンソールは「書かずに済ませる」道具であると同時に、「どう書けばよいか」の見本でもあります。

全体の構図

同じ Windows PC の中(ネットワークには出ない) ブラウザ localhost:8766 コンソール python server.py PHITS C:\phits\bin\phits_win.exe タリー出力 *.out ・ *.eps 図(png) Ghostscript 設定 入力・ログ・図 phits.inp 書き出し 読み出して画面へ返す
図1-1 コンソールを使うときの流れ。 計算そのものは配布版の PHITS がそのまま行います。コンソールは入力ファイルを書き、PHITS を起動し、出てきたものを見やすくするだけです。 だから結果は、手で書いた入力で PHITS を回したときと同じものです。
表1-1 用意するものと、どこで用意するか
もの役割どこで用意するか
PHITS 本体計算そのもの。C:\phits に入る加速キッチンから入手し(2章)、インストーラで入れる(3章)
GhostscriptPHITS が描く eps 図を png に変換するPHITS のインストール時に一緒に入る(3章)
Python 3.8 以上コンソールのサーバを動かすpython.org から(3章)
PHITS コンソール画面・入力ファイルの組み立て・実行管理・図git clone で取ってくる(5章)
numpy / matplotlib / Pillow論文用の図の書き出し(なくても計算と表示はできる)pip で(3章・任意)

やることの順番

一度だけ —— 約 30 分 毎回くり返す 入手 2章 インストール3章 · 15 分 Python 3章 · 5 分 動作確認 4章 · 2 分 コンソール 5章 · 3 分 描いて回す 7・8章 · 数十秒〜 読んで比べる9・10章 条件を変えて次の1本へ
図1-2 導入は一度きり、以降は右の2つのくり返しです。
📍 コマンドをどこで打つかは、ブロック左上のラベルで確認

この講座は Windows だけで完結します(CORSIKA 講座と違って WSL は使いません)。 それでも「PowerShell に打つもの」と「ブラウザのアドレスバーに入れるもの」「ファイルに書くもの」が混ざるので、 すべてのコマンドブロックに置き場所を書いてあります。

PowerShell / ブラウザ ファイルの中身 出力例

1章のまとめ

  • PHITS は物質中の放射線を1粒ずつ追うモンテカルロ計算コード。結果はヒストリーあたりの平均と、その統計誤差。
  • 指示は入力ファイルで行う。コンソールはそれを画面操作から組み立て、中身もいつでも見せてくれる。
  • 計算は配布版の PHITS がそのまま行う。コンソールは書く・起動する・見せるだけ。
  • PHITS 本体は加速キッチンから入手する。
02

入手する

PHITS は加速キッチンから入手してください。

03

インストールする

ここからは Windows での手順です。PHITS 自体は Mac や Linux でも動き、コンソールも Linux に対応するよう書かれていますが、 この講座で実機確認したのは Windows 11 だけです。所要 15〜20 分。ディスクは約 11 GB 空けておいてください(核データが大きいためです)。[2]

  1. 受け取ったパッケージを展開する

    パッケージが ZIP の場合は、必ず全体を展開(解凍)してからインストールを始めてください。 ZIP の中をダブルクリックで覗いた状態のまま実行すると失敗します。

    展開したフォルダには win / mac / linux のフォルダがあり、 それぞれにインストール手順書(PowerPoint / PDF / テキスト)が入っています。Windows なら win フォルダの手順書が一次資料です。 インストーラの画面は版によって変わることがあるので、この講座では1枚ずつは追わず、手順書に従ってください。

  2. インストール先は既定の C:\phits のままにする

    インストールでは圧縮・展開に 7-Zip が使われます。PHITS のパッケージには、Ghostscript(図の表示・変換)、 SumatraPDF(eps の表示)、PHITS-Pad(入力ファイル用エディタ)のインストーラも同梱されています。 Ghostscript は必ず入れてください。コンソールが PHITS の図を png にするのに使います。

    インストール先は既定の C:\phits から変えないのがおすすめです。 コンソールも既定でここを見に行きますし、日本語や空白を含むパスは、Fortran で書かれたプログラムのトラブルのもとになります。

  3. 入ったことを確かめる

    インストーラは、環境変数 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、図を描く angel
    manualユーザーマニュアル(日本語・英語)。困ったときの最優先の資料
    lecture公式講習会の資料と入力ファイル。basic\lec01 から順に進めるのが公式の推奨ルート
    recommendation用途別の推奨設定の入力例。自分の計算に近いものを探して改造するのが近道
    sample機能ごとのサンプル入力
    XS, data核データ・原子データ。容量の大部分はここ
  4. 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
04

素の PHITS で1回動かす

コンソールを入れる前に、PHITS 単体で計算が通ることを確かめておきます。 あとで何かうまくいかなかったとき、「PHITS の問題か、コンソールの問題か」を切り分けられるようになります。 題材は公式講習会の最初の入力 lec01.inp(水の球に 150 MeV の陽子を撃つ)です。

  1. 作業用フォルダにコピーして実行する

    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 にドラッグ&ドロップしても同じことができます。公式資料ではこちらのやり方が紹介されています。

  2. 出てきたファイルを確かめる

    PowerShell
    dir -Name
    出力例
    batch.out
    lec01.inp
    phits.out
    track_xz.eps
    track_xz.out
    track_xz_err.eps
    track_xz_err.out

    phits.out は計算の要約(バージョン、使った時間、警告)、*.out はタリーの数値、*.eps はそれを PHITS 付属の ANGEL が描いた図です。 track_xz.eps を開くと、陽子が水の中で止まるまでの飛跡の図が見えるはずです。 ここまで通れば PHITS 側の準備は完了です。

05

コンソールを導入する

PHITS コンソールは GitHub に置いてあります。git clone して python server.py で起動し、ブラウザで開く——これだけです。 ビルドも、サーバ本体のための pip install もありません。[7]

  1. コンソールを取ってくる(一度だけ)

    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.pyeps → png の変換と matplotlib の作図。コンソールを使わず単体でも動く
    config.example.jsonPHITS の場所などを変えたいときの設定の雛形(ふつうは不要)
    plan.html設計書。コンソールが何をどう判断しているかを知りたくなったら
    🔄 更新するとき

    コンソールは手が入り続けます。この講座の説明と画面が食い違うと感じたら、まずこれを実行してください。

    PowerShell
    cd $HOME\phits-console
    git pull
  2. サーバを起動する

    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.json

    config.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
    }
  3. ブラウザで開く

    Edge でも Chrome でもかまいません。アドレスバーに次を入れます。

    ブラウザのアドレスバー
    http://localhost:8766
    ヘッダ右上の状態表示。PHITS windows、Ghostscript、matplotlib 3.10.8 の3つが緑で、実行中 0 / 2 と表示されている。
    図5-1 ヘッダ右上の状態表示。 PHITS と Ghostscript が緑なら準備完了です。「実行中 0 / 2」は、いま走っている本数と同時に走らせられる上限です。

    8766 番が他とぶつかるなら python server.py 8800 のように起動時に変えられます(ブラウザ側の番号も同じだけ変えてください)。

  4. 毎回の起動をダブルクリックにする(任意)

    次の3行を phits-console.bat という名前でデスクトップに保存すると、ダブルクリックでサーバとブラウザが立ち上がります。

    phits-console.bat
    cd /d %USERPROFILE%\phits-console
    start "" http://localhost:8766
    python server.py

    ブラウザのほうが先に開くので、最初は「接続できません」と出るかもしれません。数秒待って再読み込みしてください。 止めるときは黒い窓で Ctrl+C。

🔒 コンソールは「自分の PC の中だけ」で使うもの

サーバは 127.0.0.1(自分自身)でしか待ち受けません。同じ PC のブラウザからは見えますが、LAN の他のマシンからは見えません。 認証の仕組みが無いので、設定を変えて外に公開しないでください。

06

画面の見取り図

開くとこうなります。左で「何を撃ち、何を数えるか」を決め、中央で「形」を描き、右で「実行」します。下に履歴が並びます。

コンソールの全体。★ヘッダの状態表示、①左の設定タブ、②描画ツールとビュー切替、③断面キャンバス、④3Dプレビュー、⑤レイヤーとプロパティ、⑥実行、⑦入力ファイル、⑧ログ、⑨履歴に番号が振られている。
図6-1 画面の見取り図。番号は表6-1に対応します。 ウィンドウの幅が狭いと③④が縦に並んだりしますが、部品は同じです。
表6-1 画面のどこで何をするか
場所すること
★ 状態表示PHITS・Ghostscript・matplotlib が見えているか、いま何本走っているか
① 設定タブ線源(粒子・エネルギー・形・向き)/材料/タリー(何を数えるか)/計算条件(ヒストリー数・物理・乱数)/プリセット(例の読み込みと、自分の設定の保存)
② ツールバー描く形(直方体・球・円柱・円錐台・楕円体)、線源とタリー範囲の描画、距離の計測。XZ / XY / YZ の断面の切り替えと、断面の位置
③ 断面キャンバス形を描き、ドラッグで動かし、ハンドルで大きさを変える。PHITS と同じ規則で塗り分けてある
④ 3D プレビュー描いた形の立体図。ドラッグで回転、ホイールで拡大縮小。「断面で切る」で③の位置で切り欠く
⑤ レイヤーとプロパティ形の一覧(上にあるものほど前面=優先)と、選んだ形の寸法・材料・密度を数値で直す場所
⑥ 実行実行名をつけて ▶ 実行。スイープ(10章)。「断面図」「3D 図」で PHITS 自身に形を描かせて確認(8章)。所要時間の目安も出る
⑦ 入力ファイルいまの設定から組み立てた phits.inp。触るたびに作り直される。コピー・保存もできる
⑧ ログ実行中の PHITS の出力と、バッチ単位の進捗バー
⑨ 履歴過去の実行の一覧。開くと結果、チェックを2つ以上入れると比較(9章・10章)

覚えておくと速いキー操作

表6-2 キャンバスのショートカット(画面の「プロパティ」欄の下にも書いてあります)
キー動作
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+ドラッグ、ホイール画面の移動、拡大縮小
同じ場所をもう一度クリック重なって奥にある形に選択が移る
07

最初の計算 —— ブラッグピーク

最初は組み込みの例から始めます。150 MeV の陽子を、40 cm の水の箱に撃ち込む計算です。 陽子のような重い荷電粒子は、止まる直前にいちばん多くエネルギーを落とします。この山がブラッグピークで、 陽子線治療が「がんの位置でだけ強く効く」ことの根拠になっています(放射線の基礎)。

  1. プリセットを読み込む

    左の「プリセット」タブを開き、いちばん上の「陽子線のブラッグピーク(水ファントム)」の「読み込む」を押します。 いまの設定は置き換わりますが、元に戻す(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 → 水。陽子より鋭いピークと、原子核の破砕による「しっぽ」
  2. 左の4つのタブを見ておく

    読み込んだ中身を、タブごとに確認します。ここで決めていることが、そのまま入力ファイルの各セクションになります。

    設定の4つのタブを並べたもの。左から、線源(陽子、単色 150 MeV/n、s-type 1、方向 +z)、材料(水)、タリー(T-Track の xz 2D 飛跡)、計算条件(maxcas 1000、maxbch 5、物理、乱数、OpenMP、world の余白)。
    図7-1 設定の4つのタブ(左から 線源・材料・タリー・計算条件)。 分かりにくい項目には、画面の中に短い説明が書いてあります。
    線源 [ Source ]proton · 150 MeV · s-type 1

    何を・どれだけの勢いで・どこから・どちら向きに撃つか。 粒子(proj)は陽子・中性子・光子・電子から重イオンまで。エネルギー(e0)の単位は MeV/n(核子あたり)で、陽子なら MeV と同じです。 形(s-type)は 1 が z 軸に平行な円柱で、半径 r0 = 0.5 cm の細いビームにしてあります。

    ここに注意炭素線などの重イオンでは 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,000

    maxcas が1バッチあたりの粒子数、maxbch がバッチ数で、その積が総ヒストリー数です。進捗はバッチ単位で出ます。 negs は電子・光子をどこまで追うか(EGS5 を使うかどうか)、rseed は乱数の種、OpenMP は並列版を使うスレッド数です。

    ここに注意最初は総ヒストリー数を小さくして形と設定が正しいことを確かめ、それから増やすのが鉄則です。右の「実行」欄に、直近の実行から見積もった所要時間の目安が出ます。

  3. 入力ファイルを覗く

    右の「入力ファイル」欄(⑦)には、いまの設定から作った phits.inp が表示されています。 何か設定を触るたびに作り直されるので、「この項目を変えると入力ファイルのどこが変わるか」をその場で見られます。 PHITS の入力を覚えたい人は、ここを横目で見ながら操作するのがいちばんの近道です。

    🪄 オレンジの注意書きは、コンソールが自動で直したところ

    このプリセットでは「線源 1 が境界面 z=-20. に乗っていたので -0.001 cm ずらしました」と出ます。 線源がちょうど形の表面にあると、PHITS はどちら側の領域から始めればよいか判断できずエラーになるので、ほんの少しだけ外にずらしています。 こうした調整は必ずここに表示されます。

  4. 実行する

    右上の「実行名」に名前(例:water-150)を入れて ▶ 実行を押します。空欄なら日時から自動で名前が付きます。 ログ欄(⑧)に進捗バーが出て、PHITS の出力が流れます。この例なら数秒で終わります。

    右側の列。実行欄、入力ファイルの表示、ログ欄。ログ欄には batch 7 / 20 running の進捗バーと、bat[ 7] ncas = 35000 などの行が並ぶ。
    図7-2 実行中の右列。 ログの bat[ 7] ncas = 35000. は「7 バッチ目まで終わり、累計 35,000 ヒストリー」という意味です。 (この図は 8 章の、ヒストリー数を 100,000 に増やした計算のものです。)

    終わると下の履歴(⑨)に「完了」として並びます。名前をクリックすると結果が開きます。読み方は9章で説明します。

08

形を描く —— 骨の板を入れる

次は自分で形を足します。水の中、ビームの通り道に厚さ 4 cm の骨の板を置いて、ブラッグピークがどう動くかを調べます。 体の中に骨があると陽子の止まる位置がずれる——治療計画で実際に問題になる話です。

  1. 材料を足す

    「材料」タブで「+ 材料を追加」を押し、種類を「骨(皮質骨 ICRU)」にします。 mat[2] ができ、密度 1.92 g/cm³ と元素組成が自動で入ります。

  2. 直方体を描く

    ツールバーの「直方体」(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さっき足した骨
    中央の描画エリア。XZ 断面に水の箱と、その中の骨の板(選択中でハンドル付き)。右に 3D プレビュー、下にレイヤー一覧(bone slab が water phantom の上)と、bone slab の寸法(xmin -5 から zmax -10)。
    図8-1 骨の板を描いたところ。 レイヤー一覧で bone slab が water phantom より上にあります。 上にある形ほど優先されるので、重なった部分は骨になります。
  3. 「上ほど前面」——セルの式を書かなくてよい理由

    手で入力を書くなら、水の領域は「箱 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 は、すべての形と線源とタリー範囲を囲む箱として自動で作られます(余白は「計算条件」タブで変えられます)。

  4. PHITS 自身に描かせて確かめる

    画面の塗り分けは PHITS と同じ規則で計算していますが、最後に信じるべきは PHITS 自身の解釈です。 「実行」欄の「断面図」を押すと、PHITS をジオメトリ確認モード(icntl = 7)で走らせて、いまの断面を描かせます。 「3D 図」なら icntl = 11 の立体図です。どちらも数秒で出ます。

    PHITS が描いた XZ 断面。水(水色、セル 101)の中に骨(ベージュ、セル 102)の板があり、外側は void(セル 900)。
    図8-2 「断面図」(icntl = 7)。セル番号 101・102・900 が書き込まれます。
    PHITS が描いた立体図。水の箱の側面に骨の板が見えている。
    図8-3 「3D 図」(icntl = 11)。断面で切り欠いた立体を PHITS が描きます。
    🧱 形がおかしいまま長い計算を回さない

    形の定義に隙間や重なりの矛盾があると、PHITS は粒子を見失って警告を出したり止まったりします。 結果の欄にも「ジオメトリエラー」の件数が出ます(0 でなければ形を見直す)。 形を変えたら、まず「断面図」。これを習慣にしてください。

  5. 統計を増やして実行する

    ピークの位置を比べたいので、今度はヒストリー数を増やします。「計算条件」で maxcas = 5000、maxbch = 20(総ヒストリー 100,000)にし、 タイトルを Proton beam with bone slab、実行名を bone にして ▶ 実行。手元の PC で約 20 秒でした。

    比べる相手も作っておきます。骨の板を選んで Del で消し、同じヒストリー数のまま実行名 water でもう1本回します (骨の板は Ctrl+Z か、履歴の「設定を読込」でいつでも戻せます)。

8章のまとめ

  • 形はキャンバスで描き、寸法はプロパティ欄で数値で直す。材料は先に材料タブで足しておく。
  • レイヤーは上ほど優先。重なりのくり抜きはコンソールがセルの式にしてくれる。
  • 形を変えたら、PHITS 自身の「断面図」で確認してから本番を回す。
09

結果を読む

履歴(⑨)で実行名をクリックすると、その下に結果が開きます。

履歴の表。名前・状態・内容・開始・時間の列と、設定を読込・削除・スイープ比較のボタン。lecture-e_01 から 03、lecture-water、lecture-bone などが完了として並ぶ。
図9-1 履歴。1行が1回の実行です。スイープで作った実行には、振った値(ここでは線源エネルギー)が小さく添えられます。
結果の表示。上に実行の概要(ヒストリー 5000 × 20、CPU 時間、PHITS 3.36、ジオメトリエラー 0)、PHITS が描いた3枚の図のサムネイル、その下にフルエンスの 2D マップ(ビームが z = -7 付近で止まり、骨の板の輪郭が点線で描かれている)と、クリックした位置の横方向プロファイル。
図9-2 骨の板を入れた計算の結果。 上から、実行の概要、PHITS(ANGEL)が描いた図、ブラウザで描き直した対話的な図です。 2D マップをクリックすると、その位置を通る横・縦のプロファイルと、その点の値と相対誤差が出ます。

上から順に見るところ

  • ジオメトリエラーが 0 か。0 でなければ、ほかの数字を読む前に形を直します(8章)。
  • ANGEL の図(PHITS 純正)。PHITS 付属の ANGEL が描いた図を png にしたもので、論文や公式講習会と同じ見た目です。クリックで拡大、eps で元の図を落とせます。_err が付いた図は相対誤差の分布です。
  • インタラクティブ表示。同じ .out の数値をブラウザで描き直したものです。色の尺度(対数 / 線形)、色の範囲、カラーマップを変えられ、境界線(形の輪郭)を重ねられます。
  • 1D のプロファイル。クリックした点を通る線の上の値です。縦棒が統計誤差。ばらつきが大きい場所は、ヒストリーが足りていない場所です。
ANGEL が描いた T-Track の xz 図。陽子ビームが左から入り z = -7 cm 付近で止まる。骨の板の輪郭とセル番号が重ねて描かれている。カラーバーは対数。
図9-3 ANGEL が描いたフルエンスの図(t1_track_xz)。 ビームが骨の板(z = −14〜−10)を通り抜けたあと、z ≈ −7 cm で途切れているのが見えます。 ビームの外側がうっすら明るいのは、陽子が原子核と衝突して出した二次粒子(主に中性子と光子)です。

単位の「/source」をどう読むか

深部線量のタリーの単位は Gy/source、つまり陽子1個あたりの線量です。 実際のビームの線量にしたければ、撃った陽子の数を掛けます。たとえばピークの値が $2.5\times10^{-10}$ Gy/source なら、 $10^{9}$ 個の陽子で約 0.25 Gy です。 またこのタリーは、ビームを中心とする 4 cm × 4 cm の柱の中の平均であることにも注意してください(入力ファイルの [ T-Deposit ] の xmin〜ymax)。 柱の太さを変えれば値も変わります。

持ち出す

表9-1 結果の欄のボタン
ボタン・欄すること
設定をエディタに読込この実行の設定を画面に戻す。少し変えてもう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章)。

10

比べる —— 比較とスイープ

シミュレーションの結果は、1本だけ眺めてもあまり語りません。条件を1つだけ変えた2本を並べることで、初めて「何が効いているか」が見えます。

10.1 骨あり・骨なしを重ねる

履歴で bone と water の左端にチェックを入れ、右上の「選択を比較」を押します。 タリーで t2_deposit_z.out を選び、「縦軸 対数」を外すと、2本の深部線量が重なります。

比較の図。横軸 z [cm]、縦軸 Dose [Gy/source]、線形。骨なし(橙)は z = -4.6 cm 付近にピーク、骨あり(青)は z = -7.4 cm 付近にピーク。z = -14 から -10 の範囲では骨ありの線量が少し低い。
図10-1 骨あり(青)と骨なし(橙)の深部線量。各 100,000 ヒストリー。 4 cm の骨を入れただけで、ピークが約 2.8 cm 手前に来ています。
  • ピークが手前にずれる。骨なしのピークは 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つの値を何通りか試したいときはスイープを使います。 骨なしの設定のまま、「実行」欄の「スイープ…」を押します。

パラメータスイープのダイアログ。振るパラメータに「線源エネルギー e0 [MeV/n](現在 150)」、値に 100, 150, 200、名前の頭に lecture-e、3 本: 100, 150, 200 と表示。
図10-2 スイープのダイアログ。 値はカンマ区切りのほか、50:250:5(50 から 250 まで 5 点)のようにも書けます。最大 50 本です。

「振るパラメータ」に線源エネルギー、値に 100, 150, 200 を入れて「実行を積む」を押すと、3本が順番待ちに入り、同時実行数の上限(既定 2 本)ずつ走ります。 振れるのはエネルギーのほか、粒子の種類、各形の寸法・材料・密度、乱数の種です。 終わったら履歴のどれかの「スイープ比較」を押します。

スイープ比較の図。100 MeV(青)は z = -12.7 cm、150 MeV(橙)は z = -4.6 cm、200 MeV(緑)は z = 5.7 cm 付近にピークがある。エネルギーが高いほどピークは深く、低い。
図10-3 100・150・200 MeV の陽子の深部線量。各 100,000 ヒストリー。 エネルギーが高いほど深くまで届き、ピークは低く広くなります。
表10-1 ピークの深さと、NIST の値との比較
エネルギーピークの深さ(この計算)水中の CSDA 飛程(NIST PSTAR)
100 MeV約 7.3 cm7.72 g/cm²
150 MeV約 15.4 cm15.77 g/cm²
200 MeV約 25.7 cm25.96 g/cm²

水の密度は 1 g/cm³ なので、右の列はそのまま cm と読めます。[4] CSDA 飛程は「エネルギーを連続的に失いながら止まるまでに進む平均の道のり」で、ピークはその少し手前に来ます。 PHITS の結果が、独立に測定・評価された値と数 % 以内で合っている——こうして既知の値と突き合わせて、自分の設定が正しいことを確かめるのが、シミュレーションを使うときの基本動作です。

🧪 やってみよう

① 骨の板を「鉛」や「空気」に変えると、ピークはどちらにどれだけ動くか。 ② 骨の板の厚さ(zmin)をスイープで 1, 2, 4, 8 cm と振り、ずれの大きさが厚さに比例するか確かめる。 ③ プリセットの「炭素線のブラッグピーク」と陽子のピークを比較し、形の違い(鋭さとピークの後ろの「しっぽ」)の理由を考える。

11

うまくいかないとき

まず4章の手順で素の PHITS が動くかを確かめると、PHITS の問題かコンソールの問題かが切り分けられます。

表11-1 よくある症状と対処
症状原因対処
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 use8766 番を他が使っている/前のサーバが残っているpython server.py 8800 のように別のポートで起動する
ジオメトリエラーが 0 でない/PHITS が途中で止まる形の定義の矛盾、線源が形の外や境界にある「断面図」で形を確認。phits.out の末尾に原因が書いてある
いつまでも終わらないヒストリー数が多すぎる、重い物理設定(EGS5 など)「中止」を押し、総ヒストリーを 1/10 にして所要時間を測ってから増やす。「計算条件」の OpenMP で並列にもできる
実行を削除して同じ名前で回し直したら、対話的な図だけ古いままブラウザが前の実行の数値を覚えている(コンソール 0.1.0 の既知の動作)ページを再読み込み(F5)する。実行名を毎回変えれば起きない。ANGEL の図とファイルは正しく新しいものになっている
画面に説明どおりの項目が無いコンソールが古いgit pull(5章)
git clone で認証を求められる/not foundリポジトリにアクセスする権限が無い講座の担当者に連絡する

環境ができたあと、毎回使うのはこれだけ

PowerShell
cd $HOME\phits-console
python server.py                 # → ブラウザで http://localhost:8766
git pull                         # ときどき:コンソールを更新
12

記録と引用

シミュレーションの結果は、同じ入力・同じバージョン・同じ乱数の種がそろえば再現できます。 逆にいえば、そのどれかを記録し忘れると、あとで自分でも同じ図を作れなくなります。

実験ノートに残しておく項目

  • 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] コンソールは入力を作るための道具なので、方法の欄に「入力ファイルの作成にはブラウザ上のツールを使った」程度に書けば十分です。

📚 T. Sato et al., J. Nucl. Sci. Technol. 61 (2024) 127–135

“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 のマニュアルが正です。

13

一次資料・参考文献

迷ったら、まずここに挙げた一次資料に戻ってください。

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
  1. 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
  2. インストールの前提: PHITS 配布パッケージ同梱 readme-jpn.txt「PHITS スタートアップマニュアル」(動作環境・必要なディスク容量・インストール方法・アンインストール方法)
  3. 入力の書式・物理モデル: PHITS User's Manual(配布パッケージの manual フォルダ、および phits.jaea.go.jp/manual/)
  4. 水中の陽子の CSDA 飛程: M. J. Berger et al., ESTAR, PSTAR, and ASTAR, NIST Standard Reference Database 124. physics.nist.gov — PSTAR
  5. Ghostscript: ghostscript.com
  6. Python: python.org — Python Releases for Windows
  7. コンソール: PHITS Simulation Console 0.1.0, GitHub. github.com/jedipuppy/phits-console(最終参照 2026-09-24)