Manual in Japanese
日本語マニュアル
目次に戻る
7. GDDファイルの作成
7.1 GDDクラスライブラリ
| ここでは、GDDファイルを出力するためのクラスライブラリについて説明します。 |
| ファイル | |
|---|---|
| 展開 | # tar -zxvf gMocrenIO.2010June18.tgz |
| 移動 | # cd gMocrenIO |
| クラスライブラリ | ヘッダ: include/gMocrenIO.hh 及び ソース: src/gMocrenIO.cc |
| ツール | |
| コンパイル&リンク | # make |
| リスト | # ls CT2Density.dat GNUmakefile dumpgdd makegdd src
DICOM.dat dicom2gdd include mergegdd
|
| dumpgdd | GDDファイルをファイルダンプする。(実行方法を変更しました。) # dumpgdd -i dose.gdd |
| makegdd | dumpgddでダンプしたファイルからGDDファイルを作成する。つまり、そのダンプされたファイルの形式でファイルが保存されていれば、GDDファイルを作ることができる。(実行方法を変更しました。) # makegdd -o new.gdd |
| mergegdd | 2つのGDDファイルを統合する。(実行方法を変更しました。) # mergegdd -i1 dose1.gdd -i2 dose2.gdd -o new.gdd |
| dicom2gdd | DICOMデータセットからGDDファイルを作成する。 "DICOM.dat"ファイルにデータリストを記入する。"CT2Density.dat"ファイルに、CT値と密度との対応表を記入する。(実行方法を変更しました。) # dicom2gdd -o new.gdd |
| ファイル | |
| GMocrenDataIO.{hh,cc} | GDDファイル入出力クラスライブラリ。 |
| dumpgdd.cc | dumpgddのmainプログラム。 |
| makegdd.cc | makegddのmainプログラム。 |
| mergegdd.cc | mergegddのmainプログラム。 |
| dicom2gdd.cc | dicom2gddのmainプログラム。 |
| DicomInterface.{hh,cc} | dicom2gddで使われているDICOMデータ入力のためのクラスライブラリ。 |
| utils.{hh,cc} | 各ツールで使っている共通のユーティリティ関数。 |
7.2 サンプルプログラム
| gMocren IOクラスライブラリを組み込んで、GDDファイルを出力するプログラムです。 (新しいバージョン(2008年8月版)でも使えますが、新しいフォーマットには今後対応予定です。) |
メニューの"Utility software"にあるGeant4 codeは、Geant4ディストリビューションの ${G4INSTALL}/examples/extended/medical/DICOM/ をベースに作っています。
オリジナルのコードの変更箇所です。修正箇所には、次のように最初と最後にコメント行を入れています。
// for gMocren -->
(修正行)
// <--
| 修正ファイル | |
|---|---|
| dicom.cc | DicomRunActionをG4RunManagerにユーザアクションとして登録 |
| DicomGeometry.cc |
GMocrenDataManagerにDICOMのparameterised volumeの中心座標を登録
オリジナルではDicomPatientParameterisationで指定範囲内の密度のボクセルのみでgeometryを構築しているが、これでは線量分布を取得し辛いために、このサンプルではすべての密度でボクセルを構築するように変更。 線量分布を取得するためのsensitive detectorの登録。このサンプルでは、G4MultiFunctionalDetectorとG4PSDoseDepositで取得する。 これらに伴うヘッダファイルのインクルード。 |
| DicomEventAction.cc | EndOfEventAction()で粒子の飛跡をGMocrenDataManagerに登録。 |
| 追加ファイル | |
| GMocrenDataIO.{hh,cc} | GDDデータファイルの入出力クラスライブラリ。 |
| GMocrenDataManager.{hh,cc} | 必要なデータを収集して、GMocrenDataIOを使ってGDDデータを作成するクラス。 |
| DicomRun.{hh,cc} | DicomGeometry.ccで追加した、線量分布の取得のためのG4PSDoseDepositを利用するために必要なクラス。 |
| DIcomRunAction.{hh,cc} |
BeginOfRunAction()でGMocrenDataManagerに、 - DICOMによる患者geometryのボクセル数を登録。 - 各ボクセルの密度を登録。 - ボクセル間隔を登録。 - その他の必要な情報を計算するために関数を実行。 EndOfRunAction()でGMocrenDataManagerに、 - 線量分布を登録。 - その他の必要な情報を計算するために関数を実行。 |
| run1k.mac | 1000イベントを実行し、飛跡も取得するマクロ。次のように実行する。
bin/Linux-g++/dicom run1k.mac
|
7.3 もう一つの作り方
| ツールの makegdd を使いgddファイルを作ります。 |
# ./makegdd -o new.gddこのコマンドを実行する前に、次のファイルを実行ディレクトリに用意します。
| 必須: | header.dat , modality.dat , modality-map.dat |
| 選択: | dose.dat , tracks.dat, detectors.dat |
| サンプル: | header.dat , modality.dat , modality-map.dat, dose.dat , tracks.dat detectors.dat |
各ファイルの書式
| header.dat | ||
|---|---|---|
| 行 | 例 | 説明 |
| 1 | 4 | ファイルバージョン(いつも4) |
| 2 | 0 | イベント数(可視化には不使用) |
| 3 | 7.815 7.815 1.25 | x,y,z方向のボクセルサイズ(間隔) [mm] (モダリティと線量分布で共通の値を使用) |
| 4 | no comment | コメント(1024文字まで) |
| modality-map.dat | ||
|---|---|---|
| 行 | 例 | 説明 |
| 1 | -1024 2048 | モダリティ値の最小値及び最大値(CT値) |
| 2 ... | 0 0 0 0 0 .... | 最小値から最大値の各CT値に対応する密度 [g/cm3] (最大値−最小値+1)個の値の羅列(例の場合は、3073個の値の羅列になる。) |
| modality.dat | ||
|---|---|---|
| 行 | 例 | 説明 |
| 1 | 32 32 81 | モダリティ画像のサイズ(xm,ym,zm) |
| 2 | 0 | 次に続くモダリティ画像の値の単位(0: CT値、1: 密度[g/cm3]の選択) |
| 3 ... | -1024 -1024 .... | (xm*ym*zm)個の値の羅列 |
| dose.dat(変更有り) | ||
|---|---|---|
| 行 | 例 | 説明 |
| 1 | 1 | 線量分布データの数 2以上の場合は、2行目から"last"行のデータまでを繰り返し配置 |
| 2 | dose_1 | 線量分布データの名前 |
| 3 | 32 32 81 | 線量分布のサイズ(xd,yd,zd) |
| 4 | 0 1.38e-1 | 線量分布の最小値、最大値(最小値はいつも0にする。) |
| 5 | keV/g | 単位 |
| 5 ... | 0 0 0 .... | (xd*yd*zd)個の値の羅列 |
| 0 0 0 | 線量分布とモダリティ画像の相対位置(単位:ボクセル) モダリティ画像と線量分布画像のサイズが違う場合はその差をボクセル単位で設定。但し、ボクセル間隔は同じ。 | |
| tracks.dat(変更有り) | ||
|---|---|---|
| 行 | 例 | 説明 |
| 1 | 100 | 放射線の数 以下の2行目以降の情報をセットとして、この放射線の数と同じ数のセットが必要。 |
| 2 | 255 0 0 | 放射線の色 但し 、r,g,bの順に、0-255の範囲で設定。 |
| 3 | 10 | 放射線のステップ数 1本の放射線は、短いステップで構成される。 |
| 4 ... | 61.0 25.0 54.72 58.0 24.2 4.38 | 放射線の1ステップの始点(x1,y1,z1)、終点(x2,y2,z2) 3行目のステップ数と同じ数のステップの始点・終点情報が必要。 但し、モダリティ画像の中心が(0,0,0) |
| detectors.dat(追加) | ||
|---|---|---|
| 行 | 例 | 説明 |
| 1 | 100 | 検出器の数 以下の2行目以降の情報をセットとして、この検出器の数と同じ数のセットが必要。 |
| 2 | box1 | 検出器の名前 |
| 3 | 255 0 0 | 検出器の色 但し 、r,g,bの順に、0-255の範囲で設定。 |
| 4 | 10 | 検出器の辺の数 検出器はワイヤーフレームで表示する。その辺の数。 |
| 5 ... | 6.10 2.50 5.47 58.0 24.2 4.38 | 検出器の1辺の始点(x1,y1,z1)、終点(x2,y2,z2) 4行目の辺の数と同じ数の始点・終点情報が必要。 但し、モダリティ画像の中心が(0,0,0) |