部門 > ROOT > hadd

複数のROOTファイルを結合するコマンドは、hadd。
ROOTを立ち上げる必要がなく、コマンドラインから実行できるので簡単だし、シェルスクリプトも書きやすい。
hadd out.root 1.root 2.root
とか。

オプション

  • '-f' : 上で言うout.rootが存在した場合に上書きする。
  • '-k': ワイルドカードを使って hadd out.root ?.rootとかしたときに、たとえば3.rootがゾンビとかだったりしたときはスキップして処理を続ける。

シェルスクリプト(Bash)書いてみた。 -> ver.2

K本研以外の人にはあんまり関係ないと思われる。ELE_AnalyzerというのはELEGANTという検出器に使われてたもの(?)
生データをHBKに変換するときにあるサイズ以上だと分割されてしまうので、それぞれをROOTに変換してからhaddで結合する。
#!/bin/bash
./ELE_Analyzer $1
declare -i i #iは整数とする
i=1
while [  -f $1_00$i.hbk ]; #ファイルが存在する番号までループを回す
do
h2root $1_00$i.hbk
rm $1_00$i.hbk #つくったHBKファイルを消す
source="$source $1_00$i.root" #ROOTファイルを結合するときの元となるファイルを集めた文字列
i=$i+1
done
hadd $1.root $source 
rm $source #つくったROOTファイルを消す
なお、このシェルスクリプトを動かすには、K本研に伝わるプログラムであるELE_Analyzerと、Debianでsudo apt-get install cernlibしたときに同時にインストールされるもろもろのパッケイジが必要です(これはh2rootするときなのだけど、criticalに何が必要なのかはよくわからん)。
引数には生データのファイル名をとって、
./makingroot.sh 22na-20111001.001
のように実行してください。

参考リンク

タグ:

ROOT Bash
最終更新:2013年01月28日 16:34