cmlab変換

「cmlab変換」の編集履歴(バックアップ)一覧に戻る

cmlab変換 - (2007/12/13 (木) 23:45:57) のソース

散乱粒子数とFCの値などを入力していけば断面積を計算し、
非相対論でCM系に変換して出力します。

あと、gnuplotでグラフをつくりやすいようにマクロも同時に出力します。
それと、テキストでもグラフを無理やり出力します。

基本的にはkinematicsのprogramと使い方は同じで、parameterを入力しておいたファイルを
読み込ませて計算します。

必要なパラメータは

 #runname-outputtitle-deg-gross---scaler--dOmega--srfcdns-mass-A--Z--A-Z-A-Z-A--Z--E--Ex
 #ground state
 run0140 27Aldd27Al 35.9 3.420e+4 3.279e+3 8.498e-4 4.0e0 2.7e1 27 13 2 1 2 1 27 13 10 0
 run0139 27Aldd27Al 40.9 4.104e+4 5.081e+3 8.498e-4 4.0e0 2.7e1 27 13 2 1 2 1 27 13 10 0
 run0141 27Aldd27Al 45.9 4.172e+4 3.666e+3 8.498e-4 4.0e0 2.7e1 27 13 2 1 2 1 27 13 10 0
 run0165 27Aldd27Al 49.1 3.052e+4 5.280e+3 8.498e-4 4.0e0 2.7e1 27 13 2 1 2 1 27 13 10 0
 run0142 27Aldd27Al 50.9 3.344e+6 5.039e+3 8.498e-4 4.0e0 2.7e1 27 13 2 1 2 1 27 13 10 0

前から順番に、
-run name
-出力されるファイル名(同じファイル名を指定すれば結果をどんどん書き足していきます)
-角度
-散乱粒子数
-scalerの値
-立体角(これはこの値から変える必要は無い)
-面密度(mg/cm^2)
とりあえずは
|CH2     |2mg/cm^2    |
|13C     |3e-2mg/cm^2 |
|27Al    |4mg/cm^2    |
|melamine|1mg/cm^2    |
面密度はラダーの回転後はsqrt(2)倍する必要がある(これも正確でないので、追々議論の必要あり)
-質量数
 これはすこしややこしいですが、トータルでの質量数/調べたい原子の数 で指定してください
 
 例としては
  CH2中の12Cをみるなら 14/1
        Hをみるなら 14/2
  13Cについてはまだ不純物の割合が分からないのでなんともできませんが、
  ほぼ13Cのみで計算してもとりあえずオーダーは変わらないと思います。
  melamineはおそらくC3H6N6だと思われるので
  12Cを見るなら(12*3+1*6+14*6)/3
  Hを見るなら(12*3+1*6+14*6)/6
  14Nを見るなら(12*3+1*6+14*6)/6
  のようにしてください

-反応に関わる粒子の質量数と原子番号をkinemaのprogramと同様に
-入射粒子のエネルギーと励起エネルギー

**実行結果
一緒に添付したサンプルデータ27Al.datを読み込ませて
./crossec 27Al.dat
と実行すれば
27Aldd27Al
27Aldd27Al.plt
27Aldd27Al1st
27Aldd27Al1st.plt
27Aldd27Al2nd
27Aldd27Al2nd.plt
27Aldd27Al3rd
27Aldd27Al3rd.plt
のファイルが出力されます。

ファイルの内容は

 #27Aldd27Al cross section [barn]
 #E_LAB = 10, E_CM = 9.31, Ex = 0.00, Q-value = 0.00
 #run, deg_LAB, crssc_LAB, error, deg_CM, crssc_CM, error
 run0140 35.9 2.204e-01 1.192e-03 38.4 1.961e-01 1.061e-03
 run0139 40.9 1.707e-01 8.425e-04 43.7 1.531e-01 7.557e-04
 run0141 45.9 2.405e-01 1.177e-03 49.0 2.176e-01 1.065e-03

と、Lab系でのエネルギー、CM系でのエネルギー
そして、それぞれの系での散乱角と断面積(単位はbarnです)が出力されます。
誤差としては散乱粒子の平方根でしか評価していないので、
後々その点は、議論する必要があります。

あと、果てしなく無駄な機能として、ファイルの終わりに
次のようなグラフを出力します。

 #graph
 #THETA(CM)-2             -1             0              1              2 THETA(CM)
 #       36|++++++++++++++|++++++++++++++|++++++++++++++|++++++++++++++|    36
 #       37+                                                           +    37
 #       38+                   *                                       +    38
 #       39+                                                           +    39
 #       40+                                                           +    40
 #       41+                                                           +    41
 #       42+                                                           +    42
 #       43+                                                           +    43
 #       44+                 *                                         +    44
 #       45+                                                           +    45
 #       46+                                                           +    46
 #       47+                                                           +    47
 #       48+                                                           +    48
 #       49+                    *                                      +    49
 #       50+                                                           +    50
 #       51+                                                           +    51
 #       52+               *                                           +    52
 #       53+                                                           +    53
 #       54+                                              *            +    54
 #       55|++++++++++++++|++++++++++++++|++++++++++++++|++++++++++++++|    55
 #THETA(CM)-2             -1             0              1              2 THETA(CM)


pltファイルは
gnuplot 27Aldd27Al.plt
のようにして、gnuplotでそのまま実行できて、epsファイルを出力します。

とりあえずプログラムとサンプルファイルを置いておきます。