KEKにあるやつだが、なぜかうちにある。
あとでだれかかいて。
分光器で測定したファイル sample.xls をrootで解析して表示するためには以下の手順をおこないます。
解析プログラム f4500_v402.tar.gzをダウンロードして、 Ubuntu環境のホームディレクトリに置き、tar コマンドで展開します。
$ cd
$ tar xvf f4500_v402.tar.gz
x ./f4500/
x ./f4500/xls/
:
f4500というディレクトリができますので、そちらに移動。
$ cd f4500
解析したいファイルには、Y11200-01.xls を例として使います。
以下のディレクトリ(フォルダ)ができていますので、f4500/xls/ の下に解析したいY11200-01.xlsを置きます。
f4500 ---- bin 解析プログラムの実行ファイルを保存
|- csv csv file を保存
|- macro rootのマクロファイル (root fileからpdf fileを作成するマクロ)
|- pdf pdf file を保存
|- root root file を保存
|- src 解析プログラムのソースファイル
|- xls ---- Y11200-01.xls excel file を保存
解析プログラムをソースファイルからコンパイルして実行ファイルを作成します。
$ cd src
$ make clean
$ make
$ cd ..
すると bin の下に、f4500_root というファイルが出来ます。
これが実行ファイルになります。
f4500 ---- bin ---- f4500_root 解析プログラムの実行ファイルを保存
|- csv csv file を保存
|- macro rootのマクロファイル (root fileからpdf fileを作成するマクロ)
|- pdf pdf file を保存
|- root root file を保存
|- src 解析プログラムのソースファイル
|- xls ---- Y11200-01.xls excel file を保存
(srcやbinの下には他のファイルもあるので注意)
excelファイルからcsvファイルに変換
$ xls2csv xls/Y11200-01.xls | nkf -w > csv/Y11200-01.csv
csv/ の下に Y11200-01.csvが作成されます。
f4500 ---- bin ---- f4500_root 解析プログラムの実行ファイルを保存
|- csv ---- Y11200-01.csv csv file を保存
|- macro rootのマクロファイル (root fileからpdf fileを作成するマクロ)
|- pdf pdf file を保存
|- root root file を保存
|- src 解析プログラムのソースファイル
|- xls ---- Y11200-01.xls excel file を保存
csv ファイルからrootファイルを作成するには、先ほど実行ファイルを作成したf4500_rootを使います。
$ ./bin/f4500_root Y11200-01
./csv/Y11200-01.csv
Title: Y11200-01
Excit: 200-600 Step: 5 Slit: 1 Bin: 81
Emit: 200-600 Step: 5 Slit: 1 Bin: 81
$
解析するファイルの指定は、csv/xxxx.csv からディレクトリと拡張子.csvを抜いた xxxx のみを書きます。
f4500 ---- bin ---- f4500_root 解析プログラムの実行ファイルを保存
|- csv ---- Y11200-01.csv csv file を保存
|- macro rootのマクロファイル (root fileからpdf fileを作成するマクロ)
|- pdf pdf file を保存
|- root ---- Y11200-01.root root file を保存
|- src 解析プログラムのソースファイル
|- xls ---- Y11200-01.xls excel file を保存
励起波長・発光波長の範囲やステップはcsvファイルに書かれているので自動的に読み込んで root ファイルを作成します。
root ファイルのままだと中身をみるのが大変なので、今回は作成されたヒストグラムをすべてpdfファイルに出力します。
$ root
root [0] .x ./macro/print2d.cc("Y11200-01", "")
Info in <TCanvas::Print>: pdf file ./pdf//Y11200-01_ALL.pdf has been created
:
root [1] .q
$
root内でマクロprint2d.ccを実行すると、別ウィンドウが開いて、ヒストグラムが表示され、pdfファイルpdf/Y11200-01_ALL.pdfが作成されます。
f4500 ---- bin ---- f4500_root 解析プログラムの実行ファイルを保存
|- csv ---- Y11200-01.csv csv file を保存
|- macro rootのマクロファイル (root fileからpdf fileを作成するマクロ)
|- pdf ---- Y11200-01_ALL.pdf pdf file を保存
|- root ---- Y11200-01.root root file を保存
|- src 解析プログラムのソースファイル
|- xls ---- Y11200-01.xls excel file を保存
作成されたpdf ファイルは6ページになります。
出力したpdfの2次元分布をみて、ピークとなっている励起・発光波長を見積もります。 例のY11200-01_ALL.pdfの場合、励起波長が425nmと325nm 発光波長が490nmあたりと見られますので、 その波長でのピーク波長での断面を作成します。そのためにはroot ファイルを作成し直します。 rootファイル作成の解析プログラムのオプションで指定します。 指定する波長は測定した値、今回の場合は5nm stepで測定していますので、5の倍数の波長を入れてください。
$ ./bin/f4500_root -x 425 -x 325 -m 490 Y11200-01
./csv/Y11200-01.csv
Title: Y11200-01
Excit: 200-600 Step: 5 Slit: 1 Bin: 81
Emit: 200-600 Step: 5 Slit: 1 Bin: 81
Excit1D: 425nm
Excit1D: 325nm
Emit1D: 490nm
$
その後、pdfの作成をすると、ページ数が増えて、励起波長425nmと325nm, 発光波長490nmの断面の1次元ヒストグラムが表示されます。
作成されたpdfファイルで2次元分布には断面を作成した波長に赤線が引かれますので、その波長がピークになっているかを確認して ずれていたら、波長を修正して再度解析プログラムf4500_rootを実行し、マクロでpdfファイルを作成します。
これを繰り返すことで、目的のヒストグラムが得られます。 y11200-01_all.pdf
収集したExcelデータをcsv形式に変換する
$ xls2csv input.xls | nkf -w > output.csv
$ # 一括変換 (*.xls -> *.csv)
$ for i in `ls $SRCDIR/*.xls `; do echo $i; CSV=`echo ${i##*/} | sed 's/xls/csv/'`; xls2csv $i | nkf -w >$DSTDIR/$CSV; done
\$SRCDIR (excel fileのあるディレクトリ), \$DSTDIR (csv fileを出力するディレクトリ)は個々に指定
パッケージでインストールする
# apt-get install nkf catdoc
サンプルコード(最新verson4.01):f4500_v401.tar.gz
src/ でmakeすると、bin/f4500_rootができる。
$ ls csv/*.csv
Y11200-01.csv
$ bin/f4500_root Y11200-01 # root/Y11200-01.rootを作成 (2次元plot(TH2D)Y11200-01とY11200-01Cut(カット条件を入れたもの)と1次元射影(TH1D) Y11200-01_Ex, Y11200-01_Em ができる、)
Title: Y11200-01
Excit: 200-600 Step: 5 Slit: 1 Bin: 81 # 波長範囲、ステップはcsvファイルから読み込んで自動設定
Emit: 200-600 Step: 5 Slit: 1 Bin: 81
$ ls root
Y11200-01.root
$ ls csv/20210813/*.csv
Y11-02.csv
$ mkdir -p root/20210813
$ bin/f4500_root -d 20210813 -l 220:230 -a 240 -c 1.0 -p -x 455 Y11-02
# 2次元plot (TH2D: Y11-02)が作られる
# カット条件は-l -a -c, (-2, -o) で指定。カットした結果が(TH2D: Y11-02Cut)で、
# このplotの最大値でY11-02はスケールされる
# Y11-02Cutを各軸に射影したものが (TH1D Y11-02_Ex, Y11-02_Em)
# -pで最大値の点のslice(発光波長490nmの励起波長分布と励起波長425nmの発光波長分布
# (Y11-02_Em490, Y11-02_Ex425)をTH1Dで作成される
# sliceする波長を自分で決める場合は -x 励起波長、 -m 発光波長 で指定 (TH1D Y11-02_Em455)
#
# -d subdir : csv, root fileがsub directory にあるときは指定($F4500_BASE/$F4500_[CSV|ROOT]/subdir/filename.[csv|root] にアクセス)
# 環境変数でファイルの有るディレクトリは変更できる(ver.3より)
# F4500_BASE: base directory (default: ./)
# F4500_CSV: csv directory (default: csv/)
# F4500_ROOT: root directory (default: root/)
./csv/20210813/Y11-02.csv
Title: Y11-02
Excit: 200-600 Step: 5 Slit: 1 Bin: 81
Emit: 200-600 Step: 5 Slit: 1 Bin: 81
Excit1D: 455nm
Excit1D: 425nm
Emit1D: 490nm
$ root -l root/20191014/Y11-02.root
Attaching file ./root/Y11-02.root as _file0...
root [1] _file0->ls()
TFile** ./root/20210813/Y11-02.root
TFile* ./root/20210813/Y11-02.root
KEY: TH2D Y11-02;1 Y11-02 # 2次元plot
KEY: TH2D Y11-02Cut;1 Y11-02Cut # 2次元plot (cut後)
KEY: TH1D Y11-02_Em;1 Y11-02Cut # Emission 軸への射影 (横軸 Emission)
KEY: TH1D Y11-02_Ex;1 Y11-02Cut # Excitation 軸への射影 (横軸 Excitation)
KEY: TH1D Y11-02_Ex455;1 Y11-02_Ex455 # Excitation 455nmのときのEmission分布 (option指定 -x 455)
KEY: TH1D Y11-02_Ex425;1 Y11-02_Ex425 # Excitation 455nmのときのEmission分布 (最大値自動生成 -p)
KEY: TH1D Y11-02_Em490;1 Y11-02_Em490 # Emission 490nmのときのExcitation分布 (最大値自動生成 -p)
cutの設定についての詳細はこちらの図を参照
macro/ 以下に2次元plotの印刷サンプルがある
$ mkdir pdf/20210813
$ root
root [1] .x ./macro/print2d.cc("Y11-02", "20210813")
# or
$ root -l -q -x 'macro/print2d.cc("Y11-02", "20210813")'
# pdf/20191014/Y11-02_all.pdfを作成(2次元4枚・1次元射影5枚)
$ ls pdf/20210813
Y11-02.pdf
y11-02_all.pdf
f4500_root のオプション設定が大変難しいので、どのようにカットしていくのかの例を以下にあげます。 解析例