Analysis page
ここでは主に各種パラメーターをどのようにして求めていくかをまとめようと思います。
analyzer、geant、および各種パラメーターを決めるためのcalibration programを
skspc15:/home/miwa9/pub
にそれぞれNewAnalyzer, geant, Calibrationとして置いてあります。
Calibrationのなかにはとりあえずchamberのキャリブレーション用のプログラムセットしか
置いてありません。
各chamberのキャリブレーション用に用いる解析プログラムはそれぞれ
- BDC ----- analysBdcTracking
- SDC12 ----- analysSdcInTracking
- SDC34 ----- analysSdcOutTracking
です。
NewAnalyzerをもって行ってこれらのプログラムをコンパイルしてください。
次にパラメーターを決めるためのプログラムセットはCalibrationに置いてあります。
- ana ----- いろいろ便利マクロが入っている。主に使うのはchamberの各wire毎
のT0を決めるためのマクロ calcSDCOffset.Cおよび calcBDCOffset.C
- BdcCalib ----- XT parameterを決めるためにXT parameter をupdateしながら
iterationをするためのプログラムセット
- SdcInCalib ----- BdcCalibのSDC1,2用のもの
- SdcInCalib ----- BdcCalibのSDC3,4用のもの
です。
これらを各自の作業領域にコピーして下さい。
Bdc Calibration
BdcCalib directoryのなかにいろいろプログラムが入っていますが、
以下のものをそのdirectoryにシンボリックリンクをはって下さい。
- analysBdcTracking
- param
- conf
これらについては私の作業directory
skspc15:/home/miwa9/e559/NewAnalyzer/v2.0/BdcCalib
を参照のこと。
まず、このdirectoryに置いてあるDCDrift.param.e559.tmpおよび
DCTdcCalib.param.e559.tmpをanalysBdcTrackingが読み込むように
conf directoryのanalyzer.conf.***を編集して下さい。
1. とりあえずanalyzerをまわす
これでできたroot fileをみて、residual, T0, Drift length分布などを見る。
residualがなどが太いときには以下のことを行います。
2. T0をそろえる
2.1 各ワイヤーでばらついているとき
各ワイヤーごとのT0をそろえないといけません。それには
ana directoryのcalcBDCOffset.C
を使って下さい。使い方は
ROOT> .x ../ana/calcBDCOffset.C(1, "bdc400.root")
です。これでXTカーブで得られるVの字のヒストグラムを
Vの頂点に対して対称な2次関数でfitしてTOを決めるプログラムです。
fitした値でいいか聞いてくるので、よければそのままreturnを押して下さい。
あまりにも違うような値を返してくるときも結構あるのでそのときは
自分で正しいと思われる値を入れてからreturnを押して下さい。
このプログラムが終るとt0_offset directryにbdc_layer1_offset.dという
ファイルができています。
このfileのなかにT0をどれだけshiftすれば良いかが作られます。
このファイルをDCTdcCalib.param.e559.tmpの4列目に足してあげれば良いのですが
一つ一つやるのは面倒なので、これをずらしてくれるプログラムが
mergedcoffsetです
使い方は
> ./mergedcoffset
と引数なして与えると出て来ますが、
> ./mergedcoffset < sdc/bdc > < layer# > < dcoffset.d > <
dcoffset_fine.d|shift > > tmp.d
としてあげれば良いです。今の場合だったら
< sdc/bdc > ---> bdc
< layer# > ---> 1
< dcoffset.d > --> DCTdcCalib.param.e559.tmp
< dcoffset_fine.d|shift > ---> t0_offset/bdc_layer1_offset.d
です。4つ目の引数にファイルのかわりに数字を入れると
すべてのワイヤーにたいして与えた数字分だけshiftさせます。
このプログラムは値を標準出力に表示するようになっていますので、
適当なファイルに書き出してあげて、
> mv tmp.d DCTdcCalib.param.e559.tmp
とかやってください
例えばBDC1の全てのplaneに対してt0_offset/bdc_layer**_offset.dを作って置いて
BDC1の全てをシフトしたときには
mkbdc1_offset.sh
を使って下さい。使い方は引数なして実行すれば表示されます。
これも標準出力に表示されるので適用なファイルにリダイレクトしてください
Bdc1,2,3,4すべてのoffsetのファイルを作って一気に変更したいときは
setT0offset.sh
を使って下さい
> ./setT0offset.sh
とやるとすべてのplaneでt0_offset/bdc_layer**_offset.dの分だけ値がshiftしていま
す。
これはもうDCTdcCalib.param.e559.tmpは置き換わっていて、前のファイルは
DCTdcCalib.param.e559.tmp.orgというファイルになっています。
これでwireのT0をそろえたら、
ana/showBdcDriftTime.C
を実行して各ワイヤーのTime spectrumが揃っているが確認して下さい。
あまりにも違うものがあったら自分でDCTdcCalib.param.e559.tmpを編集して下さい。
イベントが少ないワイヤーだと結構ずれてしまうことがあります。
2.2 ワイヤー毎はそろっているが全体がシフトしているとき
ヒストグラム番号
- layer*100+2 --> drift time 分布
- layer*100+22 --> drift length v.s. drift time 分布 (XT curve)
がそれぞれ下のようなものになります。
T0はXT curveにおいてdrift length=0のときにdrift time=0に
なるように調整します。
2.1で用いたcalcBDCOffset.Cを使ったときは基本的にはdrift length=0のときにdrift
time=0になっているはず。
ずらすときにはDCTdcCalib.param.e559.tmpでもDCDrift.param.e559.tmpでも
どちらでも変更できます。
例えばdrift time=-4が本当はtime=0になるはずであると
思えば、
DCTdcCalib.param.e559.tmpの4列目を-4するか、
DCDrift.param.e559.tmpの5列目を+4するか、
で大丈夫です。互いに符号が逆なので注意してください。
例えば
> ./mergedcoffset bdc 1 DCTdcCalib.param.e559.tmp -4 > hoge
> mv hoge DCTdcCalib.param.e559.tmp
とやってあげれば良い。
2. XT parameterを決める
T0が決まったら、次はXT parameterを決めます。
いろいろ思考錯誤の結果、今は次のような式でfitしています。
x = p1*t + p2*t^2 + p3*t^3 + p4*t^4 + p5*t^5
これをanalyzerの中でtype=6賭しています。
DCDrift.param.e559.tmpのなかのbdcおよびsdc1,2,3の3列目はこのtypeです。
ちなみに4列目はパラメーターの数。
XT parameterを決めるためのプログラムセットは
- calcInitXTpar.C -- Drift timeとMax Driftlengthとの関係からXT parameterの初期値を求める。
- calcXTpar2 -- analysBdcTrackingで作られたヒストグラムをfitしてXT parameterを決める。
- calcXTpar2.C -- calcXTpar2のマクロ版
- setxtpar.rb -- calcXTpar2およびcalcXTpar2.Cで作られた新しいXT parameterを
DCDrift.param.e559.tmpに更新するためのプログラム
- IterateXTpar.sh, IterateXTpar2.sh -- このなかでanalysBdcTracking、
calcXTpar2およびsetxtpar.rbを何度も繰り返し、resolutionをあげるためのプログラム
です。
2.1 XT parameterの初期値を決める
T0を揃えてから、もう一度analysBdcTrackingを行い、T0を正しくしたDrift Time分布
を作る。
ROOTを立ち上げてcalcInitXTpar.Cを実行
ROOT> .x calcInitXTpar.C("bdc***.root")
これはプログラムのなかにgetcharがところどころにあるのでreturnを押さないと、次
のplaneのxtを計算してくれないかもしれません。
終ったらxtpar/ directoryにxtpar_sdc**.dという新しいXT parameterが書かれた、
ファイルができています。
すべてのplaneのXT parameterをupdateするには、setInitXTpar.shを使います。
> ./setInitXTpar.sh
これで、DCDrift.param.e559.tmpの対応するplaneのXT parameterのみがupdateされま
す。
2.2 iterationをしてresolutionをあげる
あとは実際にトラッキングをして、トラックのワイヤーからの距離(X)と
Drift Time(T)の関係をみて、Fitしてあげて、resolutionをあげています。
これをするのがIterateXTpar.sh,IterateXTpar2.shです。
これらの違いは
- IterateXTpar.sh -- 一回、analysBdcTrackingを行ってから、すべてのplaneに対
してXT parameterをupdateして、というのを数回繰り返す。
- IterateXTpar2.sh -- 一回、analysBdcTrackingを行ってから、ある1planeにたい
してのみXT parameterをupdateしてあげて、これをplane分繰り返す、というのを数回繰り返す。
です
BDCはIterateXTpar.shの方を使えば良いと思います。
使い方は
> ./IterateXTpar.sh < Run# >
とすればOK。
IterateXTpar.shのなかの環境変数を適宜揃えて下さい。大体defaultで良いと思いますが
- PARAMDIR --- parameter fileのあるdirectory
- CONFDIR --- conf fileのあるdirectory
- ROOTFILE --- 作られるROOT fileの名前
- DCDRIDTPAR --- update すべき parameter file
- XTPARDIR --- calcXTpar2で作られた新しいXT parameter fileがあるdirectory。
defaultのままで良い。
- RAWFILE --- raw file。今はプログラムを実行しているホストを調べて、skspc15
だったらskspc15のlocalに置いてあるraw fileを使う。それ以外だったら、skspc13からNFSでとってくるんですが、
プログラムを実行している間、常にアクセスするのも負担がかかるかと思い、ます
skspc13からlocal directoryにcopyしてそれを読み込むようにします。プログラムが終
ったら、このコピーされたraw fileはremoveされます。
- VIS --- calcXTpar2でのfitの様子を画面に出すかどうか。出すなら1を出さない
なら0を設定。
- ITERATE -- iterationの回数
を各自都合の良いように設定して下さい。
大体うまくiterationをしてくれるのですが、ときどきFitに失敗することがあります。
一応、Fitのchi2を調べて、fitに失敗しているようなときにはxt parameterをupdateしない
ようなerror handlingはしてあるのですが、
Fitに失敗するようだったら、shell scriptを使わず、自分で1planeづつやってくださ
い。
scriptをつかって、Fitに失敗したときにはerror_logというファイルができていて、
そのなかにどのplaneが何回目のiterationで失敗したが書いてあります。
iterationが終ったら、residualを見るのは当然ですが、
下の絵にあるようにdrift length 分布とdrift lengthとresidualの関係を必ず見るこ
と。
drift lengthは理想的には0-2.5mmで一様になるはずです。
calcInitXTpar.Cで決めたXT parameterのときには一様になっているのですが、
Fitをしている間にずれてくるようですが、なるべくiterationの後、出来上がった
ヒストでも一様であることが望ましいです。
drift length とresidualとの間におかしな相関が無いことも確認して下さい。
SdcIn Calibration
SdcInCalib もBdcCalibと同様に
以下のものをそのdirectoryにシンボリックリンクをはって下さい。
- analysSdcInTracking
- param
- conf