Analysis page

ここでは主に各種パラメーターをどのようにして求めていくかをまとめようと思います。


analyzer、geant、および各種パラメーターを決めるためのcalibration programを
skspc15:/home/miwa9/pub
にそれぞれNewAnalyzer, geant, Calibrationとして置いてあります。
Calibrationのなかにはとりあえずchamberのキャリブレーション用のプログラムセットしか 置いてありません。
各chamberのキャリブレーション用に用いる解析プログラムはそれぞれ

です。 NewAnalyzerをもって行ってこれらのプログラムをコンパイルしてください。

次にパラメーターを決めるためのプログラムセットはCalibrationに置いてあります。 です。 これらを各自の作業領域にコピーして下さい。

Bdc Calibration

BdcCalib directoryのなかにいろいろプログラムが入っていますが、 以下のものをそのdirectoryにシンボリックリンクをはって下さい。 これらについては私の作業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 ワイヤー毎はそろっているが全体がシフトしているとき
ヒストグラム番号 がそれぞれ下のようなものになります。

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を決めるためのプログラムセットは
です。

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です。
これらの違いは です
BDCはIterateXTpar.shの方を使えば良いと思います。
使い方は

> ./IterateXTpar.sh < Run# >

とすればOK。
IterateXTpar.shのなかの環境変数を適宜揃えて下さい。大体defaultで良いと思いますが
を各自都合の良いように設定して下さい。
大体うまく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にシンボリックリンクをはって下さい。