アトラス日本Si-soft:Ray-tracingによる重量の計算方法
2004.9.20:
アトラス日本→
アトラス日本Si-Soft HP→
近藤の進展ページ |
C++コマンド集
2004.9.11 geantinoをη-φ平面状に一様にふっておいた物体の重量を計算する方法がわかった。
方法
-
目的の物体の中を通っているときのみ各ステップが終わった毎に w = density×rxy2×steplength
なるウエイトをつけて加える。rxyはstepの中心(出口や入口でもいいだろう)の座標をxy平面に投影したときの原点からの半径。
densityは通過物質の密度。steplengthは最後のstepの長さ。
- geantinoを(ηrange)×(φrange)の領域に一様にNray個飛ばしたあと
total_weight=(ηrange)×(φrange)×Σw /Nray と計算すれば全重量が出る。
サンプルプログラム(実証のために作った(linux上 g++でcompileする))
理由
geantinoが走る各ステップがカバーする小体積は図示すると右図のように計算できる。この体積ΔVに通過中の物質の密度ρをかければこのステップが
カバーした物質の重量になる。
ここで重要なのはrapidityとθの微分関係
である。これはrapidityの定義式
を微分することで得られる:
(三角法の公式や微分を思い出すのに苦労した.)
→田中礼によるJacobianを使った追加解説
今後
現存のradiation length分布をとるプログラムを少し変更するだけで重量が求められるはず→
中村浩のcodingと
結果。
T. Kondo, KEK, Japan