FrontPage

Alignment concept

ミリピードコードのブローベル先生のホームページ

http://www.desy.de/~blobel/

Chi2 global minimization の概念を示すサンプルプログラムを作ってみた。ミニマムを捜すのに2次微分行列を作って、対角化する。対角化した2次微分係数と1次微分係数の比が最小点を与える。以下のプログラムはまだ途中。でも対角化すると、パラボラ関数の2次係数がでている。 回転は試しにR(a,b,g)(作用順がabg,符合が色色)対角化は以下の場所からひろったが...

http://pc-physics.com/taikakuka.html

gcc -lm -o proofDiag proofDiag.c
./proofDiag

LAPACKを使うときは以下の頁のものに書き変える。

http://www.k.mei.titech.ac.jp/~stamura/NumericalComputation-Tips.html

LAPACKについてMakfileまでついてるsampleがあったのでdspevを動かそうとしたが、三角行列の型式で詰める詰め方が分らない。dsyevは求める固有値を与えるが、順番を変えてしまい、変換行列もその順番になる。dsyev_は正方行列をフォートランのプログラムにわたす。もとのsampleに、上のproofdiag.cの行列部分を加えた。dspevも使えるようにした。正方行列のpackedフォーマットのロードに関してはGlobalChi2のコードに代入の方法があった。ボインタのインクリメントではなぜか失敗する。

MA27と言うのも使っているようなので、テストプログラムを作ってみた。これは連立方程式をとくプログラムのように思える。ただライブラリーを作ってみた。mainプログラムとライブラリをリンクするときには-lg2cオプションが必要。入力行列は対称でないとだめ。

http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CIP/cprogram7.html

この結果を、グラントとパベルに説明した。マルチミューオン解析についてはレベル1レベル2を与えてレベル3サーチを行ないたいとの意向をパベルに説明して、カルロスにメールを書くことを了解してもらった。グラントはデータベースを経ないで直接ジヲメトリーを少し変えることが出来ないかを調べると言っていた。グラントにトラックサーチの結果、残差計算はiPatrec,xKalman,GlobalChi2Fitterでちがうのかと聞いたら、1つのときは皆おなじになるが、ふたつ以上のときはオブジェクトのなまえを変えてTrk::Trackクラスを作るとのこと。残差計算はTrk::Trackクラスを使う部分で共通。

バリデーションのためにL1L2のCSC multimuonのずれファイルを12.0.6で作製した。13.0.10ではエラーがでる。pcatsij01のGlobalChi2で作業する。pcatsij03(x86_64)にバイナリをコピーして動かすとg2cがないと言うようなエラー。再コンパイルが必要な様だ。

たしかにパベルの言うように、対角化してずれを求める問題は、直接ずれをxとし2次微分をMとして、1次微分をVとするとMx=Vの問題に帰着しそうだ。それなら変に順番をかえるdspevより直接解く法がまし。

連立方程式の方が良いことが分ったので、L1L2を入れて、L3をMA27でといてみるとトラックがちゃんと引ける中心付近のパラメータが決定できていることを確認した。フォートランのMA27演習問題は対称に入力する必要が有る。それで間違っていた。DIRECT_SOLVEというdspevを使うものを走らせると、1時間以上たってもおわらない。ターミネートした。

12.0.6のSiGlobalChi2Algs-00-00ー54ではlevel1,2,3を一緒に解析するので,level3のみの解析がしにくい。そこで13.0.10で同じことをする。そのときはずれのrootファイルをpool_insertFileCatalogしておく。

multimuon sampleの解析

まずデータをとって来る必要がある。07年3月のAlingmentハイパーニュース参照。

/castor/cern.ch/grid/atlas/caf/misal1_mc12

http://hep.nbi.dk/atlas/copyfromcastor.php?section=Projects&lang=en&version=

この中のグリッドのやり方でないと、エラーになる。nsls xxxはOK。でも

ssh lxplus.cern.ch "rfcat xxx" > xxx

ではエラーになった。

gridのdq2_getでデータセットをpcatsij02にコピーした。でもメモリー1Gのpcatsij02では無理。72GのデータをNFSマウントでpcatsij01で解析させたい。動的なもの以外をオープンにした。portmap,nfslock,nfsを再スタートするとOKになった。

http://www.asahi-net.or.jp/~AA4T-NNGK/nfs.html

Jive XMLファイルは以下のところ。13,0.10で生成した。

http://kkuatx.hep.kyokyo-u.ac.jp:~ryuichi/jiveFiles/multiMuJive.tar.gz

multimuon datasetは100kイベントだがCtl-Cでとめた為、落としたのは43k。カルロスのページにある通り、Level3をダブルコーン?でやると 25kで2328個のモジュールが最適化できる。マトリックスをテキストで書き出すジョブは終了した。Iter0_monitor.rootの中をTBrowserで見てみた。確かにカルロスの報告の通り、ビームにオフセットがある。そのままクリックするとビンがわるいので、以下のようにヒストグラムに書き出してプロット。(田中純一先生マニュアル)

TTree *ttree2=(TTree*)_file0->Get("GlobalChi2/General")
ttree2->Draw("Trk_d0>>hTrk_d0(200,-2.5,2.5)")

分解能を見ようとしたが、エラーになる。MakeClassしてみると、

Float_t         TrkRes[10000][200];   //[nTracks]

SiGlobalAlignAlgでつめている。二つめはhit。コードで解析する必要がある。次は行列の計算。1イベントだけ行なうようにJOが作ってある。

13.0.10はMCはsqliteでOKなので、そのままLocalのpacmanで解析可能。

pcatsij01のHDが8月14日にdemsgをみるとread-onlyになっていた。マトリックスデータをpcatsij02にコピーした。

残差は何もしないでもピクセルが良くなっている。確かにpixelのLevel1はVtxCandidateから作られる数字にかなりあう。ピクセルLevel2,3が30ミクロンなのであまりシリアスなアライン無でOKになるようだ。というわけなので、今の各結果について、残差をみなおしてみることにする。

Level 1のアラインメントを行うにはbeamの情報がつかえる

07年7月末のアラインメント電話会議(木曜)のバレンシアの報告で、LEVEL1のアラインメントにvertexの情報を使って、アラインメントパラメータを決定できた報告がある。この報告でいけることが確定したので、あとはLEVEL2のみ。ほぼいけそうになって来たらしい。

SimulationでAlignment rootファイルの収束観測

課題:ミスアラインメントを強調するviewer(グローバルのところにリンクがある)の利用、またはヒストグラムツールの作成。 viewerにpt100GeVでミスアラインメントの効果を見たファイルを読み込んだが、エラーが出るので、原因を調べたい。ー>viewerのroot fileをみたら、α、β、γ(x,y,z回転、以下abg)と移動、ピクセル、SCT、レイヤーの区別のフラグのある順序依存のずれ記述のファイルだった。pool.rootはクラス定義からしてあるもの。全然違うものだった。

InDetAlignDBToolにずれの生成ツールがある。LXRのIdentifier searchで調べたところ、InDetAlignGenAlgs/example/IDAlignWrite.pyに使っているところがある。InDetExample/InDetAlignExample/shareにも使っている例がある。 その例を動かしてみた。

ToolSvc.InDetAlignDBTool INFO Geometry initialisation sees 1744 pixel and 8176 SCT modules giving 34 alignment keysESC[m ToolSvc.InDetAlignDBTool INFO Keys/channels are: /Indet/Align/ID [0] /Indet/Align/PIX [100] /Indet/Align/PIXEC1 [200] /Indet/Align/PIXEC2 [201] /Indet/Align/PIXEC3 [202] /Indet/Align/PIXB1 [203] /Indet/Align/PIXB2 [204] /Indet/Align/PIXB3 [205] /Indet/Align/PIXEA1 [206] /Indet/Align/PIXEA2 [207] /Indet/Align/PIXEA3 [208] /Indet/Align/SCT [101] /Indet/Align/SCTEC1 [209] /Indet/Align/SCTEC2 [210] /Indet/Align/SCTEC3 [211] /Indet/Align/SCTEC4 [212] /Indet/Align/SCTEC5 [213] /Indet/Align/SCTEC6 [214] /Indet/Align/SCTEC7 [215] /Indet/Align/SCTEC8 [216] /Indet/Align/SCTEC9 [217] /Indet/Align/SCTB1 [218] /Indet/Align/SCTB2 [219] /Indet/Align/SCTB3 [220] /Indet/Align/SCTB4 [221] /Indet/Align/SCTEA1 [222] /Indet/Align/SCTEA2 [223] /Indet/Align/SCTEA3 [224] /Indet/Align/SCTEA4 [225] /Indet/Align/SCTEA5 [226] /Indet/Align/SCTEA6 [227] /Indet/Align/SCTEA7 [228] /Indet/Align/SCTEA8 [229] /Indet/Align/SCTEA9 [230]

たくさんオブジェクトを作っているようだが、その値はどうやって調べるのか?

dispCSCで作ったAlignableTransformをprintDBでlogに書き出したところは、オイラー角で書いているので、abgだと小さい角度が、回して戻すようになって、大きな角度が表示されている。実際には対角メイン。checkコードで確認した。

当面はLevel3のみをチェックするほうが簡単。level2,level3は64ビットでやるほうがよいかも。DBToolでntupleを作っているのでこれはHepAlignableTransformからパラメータをfloatにoffsetとオイラー角にして落としている。abgが0,0,gammaなら、euler角でgamma,0,0になるはず。

というわけで、ntupleを比較すればよい。クラスを使わずfloatとlongだけなので簡単。12.0.6のpython fileのInDetAlignNt.pyは古い書き方のように見えるがコメントをはずせばTHistSvcのntupleを作る。複数のntupleファイルを作れる例にもなっている。

Alignment fileを使ってチェック

InDetAlign_Cosmic_LocalChi2_1 のroot fileは12.0.6/DBReleaseに入っているようだ。sqlite3 COMP130.dbでアライメントフォルダーのID番号を確認した。kit 12.0.6でチェックを行う。testarea/I2.0.6/InnerDetector/../InDetCosmicRecExampleで行う。

resAligned.png
LocalAlign01.png
LocalAlign23.png

個別モジュールでのチェック

統計をあげて、モジュールごとの計測方向のずれのチェック。ビンを失敗してeta=+6が表示されてない。run 3098, 50k event. 外側のウエファーが赤。内側が黒。上書きしたので統計数値は外側。

L0L1AlignMod.PNG.png
L2L3AlignMod.png

eta 方向の平均値をプロファイルを使って調べる

http://www.slac.stanford.edu/comp/unix/package/cernroot/30207/TProfile.html

SCT_ID.hでパラメータを取得する。プロファイルの引数はname,titleなのでTHistSvcに登録するときは、nameを同じにする。 コードは簡単で以下のもの。run 3007 10k event. 40 minutes.

http://kkuatx.hep.kyokyo-u.ac.jp/~ryuichi/InDetSoftwareTutorial.tar

L0Align.png
L1Align.png
L2Align.png
L3Align.png

SR1コスミック解析

SR1コスミックデータはLEVEL2シフト解析に向いているかもしれない。レイヤーごとにシステマテックなずれがある。このアラインメント無しの解析はtestarea/12.0.3で行った。12.0.3にはalignmentファイルが無いのであらわに指定しない限り、そのまま。

SysShiftLayer.png

HepTransform3D

http://natsci.kyokyo-u.ac.jp/~takasima/doxy/CLHEP1800/html/classHepTransform3D.html

という風なので、回転してから移動する変換。

Misalignment 演習

ひさしぶりにアラインメントの演習を12.0.6で行った。SimulationでATLAS-CSC-00-01-00を指定すると/InDet/AlignのInDetAlign_CSC_02が選択される。Digitizationでも同じDetDescrVersionを指定する。InDetRecExample/jobOptions.pyではATLAS-CSC-00-00-00を指定する。しかしこれでは実行直前にDigitからInDetAlign_CSC_02を読み込んで、つじつまがあってしまう。そこでjobOptions.pyに

include ( "InDetAlignExample/InDetAlignableOverride.py")

を前のほうに入れる。(磁場のスクリプトの前に入れた。)そうするとInDetAlignable.pyがブロックされ、Misalignmentファイルが読まれなくなった。IOVSvcが機能していることを確認した。 pt100GeVを1000イベント作って、ふたつの結果を比較した。single muon 1000eventなのになんでこんなにエントリーがあるのか?JiveXMLを作成してイベントを見てみたが、Pixelはノイズが多い。SCTはSCTRDOは空。トラックはほぼ直線。

Jive tar file

Basic Alignment Wiki page

https://twiki.cern.ch/twiki/bin/view/Atlas/InDetAlignment

https://twiki.cern.ch/twiki/bin/view/Atlas/GlobalChi2Approach

12.0.0でグローバルChi2を動かそうとしたがSCT_ModuleConditionsToolがないとなる。->doMonitoring=True でこれはOK。

Not found DLL InDet::InDetCTBTracking。->above change introduces doTrackSegments=True that means TRT should run -> doTrackSegments part changed

#ref(): File not found: "globalChi.pdf" at page "GeometryAlignment"

アラインメントの状況を強調して表示するツールviewerがある。 この実行はrootで.x align_view.cxx とする。

Alignment Workshop@CERN

http://physics.syr.edu/%7Elhcb/public/alignment/LHCAlignmentWorkshop/

HepAlignableTransform

InDetDetDscr/InDetReadoutGeometryを通じて変更する。Identifier Searchで引っかかるパッケージをチェックする。

データベースを使ってずれを入れた例はInDetRecExampleの11.0.3の所に残っている。11.2.0のcosmicでもやったはずだが、例が残っていない。Book keepingが不十分だった。

New Tracking EDM の Residual plot 作成

以下の文書は Trk::Trackクラスの解説。

https://uimon.cern.ch/twiki/bin/view/Atlas/TrkTrack

さて、displacement fileの作り方はわかったので、次にこれからresidualをプロットする必要が有る。やり方としては、nominal position のESDファイルを読んで、displacementファイルで測定器の場所をセットしたときの読みのずれをプロットするのをためしてみたい。良くわからないがChi2AlignAlgs.cxxを使ってみた。エラーが出たのでみてみると、作ったdisplacement fileに中身がなかった。

GeoAlignableTransformとはVolumeに付加されるデータで、以下のデータ要素を保持しているもの。最後のvectorで最初のワールド座標へ戻る道筋が示される。

mutable unsigned short int _count;//RCBase.h
HepTransform3D _transform; //GeoTransform.h
HepTransform3D *_delta;//GeoAlignableTransform.h
std::vector<GeoGraphNode *>  _parentList;//GeoAlignableTransform.h

GeoAlignableTransformのメソッドにvoid setDelta(const HepTransform3D & Delta)がある。Identifier search で探すとInnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorManager.cxxなどで呼ばれる。setAlignableTransformLocalDeltaやsetAlignableTransformGlobalDeltaがよんでいる。これが使われるのはどこでしょう?

Identifier searchで探したが見付からなかった?ということはまだ出来てない?

こうなったらアルゴリズムを作って動かす方がよさそう。ESD解析ということで10.0.2のエド・モイスのtutorialあたりでやってみよう。10.5.0はInDetRecExampleのスクリプトがだいぶ変わっている。

コンパイルエラーが出るのでなおしましょう。

#ref(): File not found: "InDetSoftwareTutorial.h.Hit" at page "GeometryAlignment"

#ref(): File not found: "InDetSoftwareTutorial.cxx.Hit" at page "GeometryAlignment"

#ref(): File not found: "requirementsHit" at page "GeometryAlignment"

元のプログラムのようにHitLoop()をつくって、いくつかの変更の後動いた。結果をlxatlにrsyncし関係者が見れるようにした。printout があるので残差はすぐ出ると思ってたら、コードの上でのTrackPaparametersが純粋仮想クラスであるのに気がつかづまごまごしている。実体化するときにはAtaPlaneクラスになる。なるほどこれがポリモーフィッククラスといわれるわけですね。

RIO_OnTrackつまりヒットデータについての残差分布をとってみた。40muのところに山があるのは何故か良くわからない。lxatlのInDetExample/10.0.4/InnerDetector/InDetExampleをrsyncした。

#ref(): File not found: "stripResidual.eps" at page "GeometryAlignment"

RIO_OnTrackのdumpではclusterとなっているのでhitはクラスターであるにもかかわらず最初のストリップの場所とのによる残差をとったことによるミス。クラスターサイズをとって計算しなおす必要がある。SCT_ClusterOnTrack.hはInnerDetector/InDetRecEvent/InDetRIO_OnTrackにある。結局このデータではストリップの数にアクセスできなかった。ストリップの数が入っているデータを作る必要がある。

考えてみるとInDetRIO_OnTrackクラスはSCT_Clusterクラスをポインターで指しているが、これがrootに書かれたときにどうなるかが良くわからない。結局、reconstructionの時点が解析に最善のときのような気がしてきた。 Tracking/TrkEventTrkEventCnv/CnvToolsがどうもポインターのリカバーをするものらしい。これを動かせば、リカバーが出来るかも。と思ったがソースがないところを見ると出来てないみみたい。ESD解析ツールはまだ出来てないと言うことか。もういちど測定器をずらすのに挑戦しよう。

ESDの段階でずれを入れてもResidualの計算をローカル座標でやっている限り、ずれの効果は見えない。結局reconstructionの時にずらしておかないと、ずれの効果を直接見れない。

10.5.0でInDetRecExampleのjobOptions.pyを変更して、ずれを入れてresidualの図が出るようにした。コードはlxatl:~ryuichi/InDetAlignAlgs/10.5.0にrsyncで入れた。

#ref(): File not found: "residual80umBl2.eps" at page "GeometryAlignment"

#ref(): File not found: "residualNoDisp.eps" at page "GeometryAlignment"

#ref(): File not found: "AlignmentExercise.ppt" at page "GeometryAlignment"

#ref(): File not found: "AlignmentExercise2.ppt" at page "GeometryAlignment"

Chi2AlignAlg を動かす

以前動かしていた時使ったInDetRec_xKalman.pool.rootだとログファイルがどんどん増えるのでキャンセル。

scp lxplus.cern.ch:/afs/cern.ch/atlas/maxidisk/d173/ESD/InDetESD_Zee1of4.root ./

として今使っているらしいファイルを持ってきて、jobOption ファイルを変えるともっともらしいことをやっているようにも見える。でも途中に出てくる90度回したみたいなメッセージはなんのことなのか?いちおう動いたが見方がよくわからない。misalignment file:NominalAlignment.rootの作り方を見るためにInDetAlignAlgs-00-00-40をチェックアウトした。どう作ったかの情報がないので、自分で作った方がよさそう。この説明Wikiが最近できた。パッケージの説明も添付する。levelと言う変数が意味不明。DispModeも不明。

https://uimon.cern.ch/twiki/bin/view/Atlas/InDetAlignHowTo

#ref(): File not found: "InDetAlignWrt.txt" at page "GeometryAlignment"

このほかにInDetAlignAlgsのREADMEによさそうなコメントが有ったのでためしてみた。システマティックにrphi方向に80μmだけB5を移動してみた。InDetRecExampleを使う。InDetAlignAlgs/example/alignjobOptions.pyを実行してみている。

InDetAlignWrt                    INFO InDetAlignWrt::initialize() called
ToolSvc                         ERROR Factory for Tool InDetAlignDBTool not found
InDetAlignWrt                   FATAL InDetAlignDBTool not found
AthenaEventLoopMgr              ERROR Unable to initialize Algorithm: InDetAlignWrt
AthenaEventLoopMgr              ERROR Failed to initialize base class MinimalEventLoopMgr
ServiceManager                  ERROR Unable to initialize Service: AthenaEventLoopMgr
ApplicationMgr                  FATAL Invalid initial state
Appl icationMgr                   INFO Application Manager Terminated successfully

writeDBS.pyを見ると少し違っているので修正したらいちおう正常終了した。このファイルを使ってChi2Alignを動かすとわかりやすいのではないか?

#ref(): File not found: "alignjobOptions.py" at page "GeometryAlignment"

#ref(): File not found: "takaWritePool.py" at page "GeometryAlignment"

上のファイルのwriteはTrueでないとだめ。プログラムの中身を読まないとフラグ設定は出来ない。streamも変更しないとダメ。10.5.0で中身のあるrootファイルが出来たので、ESD解析も10.5.0に移行する。 ずれのrootファイルデータ作成はToolSvc.InDetAlignDBToolのINFOをみてチェックできる。今のところずれのファイルがまともでない。

ずれが思ったように入ったrootファイルが出来た。layer3の一個ずつのずれ80μmにするのはDispMode を3にする。出来たファイルはTBrowerでチェックできた。

alignment displacement file

TFile *file = TFile::Open("NominalAlignment.root")
file->ls()
POOLContainer_AlignableTransform->Scan()

多分defaultのWriteの結果。DispRphi=0.08、DispR=0.1、DispZ=0.1

alingnment 再開 kit 使用

mkdir SiRobustAlign
cd SiRobustAlign; cp ../scratch/105setup.sh ./
. setup.sh; mkdir 10.5.0; cd 10.5.0/
cp ../../scratch/10.5.0/requirements ./
cmt config
. setup.sh
cmt co -r SiRobustAlign-00-00-23 InnerDetector/InDetAlignment/SiRobustAlign
cd InnerDetector/InDetAlignment/SiRobustAlign/*/cmt
cmt config; . setup.sh; gmake

CVSのところのREADMEファイル

#ref(): File not found: "SiRobustAlignREADME" at page "GeometryAlignment"

Tracking Howto

まずEDMを理解する。

https://uimon.cern.ch/twiki/bin/view/Atlas/TrackingEDM

この文書で通常のヘリックスパラメータをペリジーPerigee(Closest approach)と呼んでいる。このパラメータはz軸にヘリックスが最も近付く点を基準に角度パラメータを決める。&mimetex(\(locX, LocY, \phi, \theta, q/p\));の角度定義の意味が良く分らないが、多分測定器基準系に対するその地点での角度だと思われる。(?)トラックパラメータについての文献で私が使っているのは古いCDFノート1790。

そのつぎはMCTruth

https://uimon.cern.ch/twiki/bin/view/Atlas/MCTruthSuggestions

TrkPrepRawData contains the "prepared raw data" (also known as RIOs - Reconstruction Input Objects) for the Tracking EDM. 

MCTruthで良く使うのはバーテックスと発生粒子だけ。となるとレッスン2のInDetPriVxCBNTなるコードでバッーテックスのtruthを見ているところを使うことになる。あとは粒子のtruthの取り方を探すことにする。

Generators/GeneratorObjects/GeneratorObjects/
Generators/GenAnalysisTools/TruthExamples

ZmumuにHistSampleを入れてみたが、500イベントで66しかZなし。HepMCを調べることにする。Simulation/HepMCというのもある。

http://mdobbs.home.cern.ch/mdobbs/HepMC/

あとRecExCommon関係もみとかないとけない。

https://uimon.cern.ch/twiki/bin/view/Atlas/ReconstructionDocumentation

code reading

RobustAlingmentのChi2AlignAlg.cxxを読むと、const DataVector<Trk::Track>* trks;がヒットの情報を持っているので、これを回してtrackパラメータを調べるのはUK勉強会の例題と同じ。内側のセンサーの座標を基準にしているのは、勘違いではないか?内側センサーの中心のストリップを基準に残差を計算してるようだ。内側を基準座標にするのではなく、アキシャルストリップを持つウエファーとするべきだと思う。レイヤーごとに内側、外側が交互にアキシャルストリップになってる。これはバレルもフォワードも。

http://kkuatx.hep.kyokyo-u.ac.jp/~ryuichi/doxygen/SiRobustAlign/10.1.0/html/index.html

https://uimon.cern.ch/twiki/bin/view/Atlas/TrackingPackageDocumentation

05 May ソフトウエアワークショップ

https://uimon.cern.ch/twiki/bin/view/Atlas/UkInnerDetectorSoftwareTutorial

#ref(): File not found: "InDetSoftwareTutorial.cxx" at page "GeometryAlignment"

アラインメントでは自前のデータが必要。そこでIan HinchliffのOpening Pleanayでも10.0.1を使えば全部できるとあるので、10.0.2やってみたら、ESDまでできた。AtlasG4Sim, Digitization, InDetRecExampleに順にできたPool.rootファイルを渡してESDを作る。ほぼOut of Boxでできる。simulationはminbiasでlxplusでは30イベントが限度。物理イベントはバッチでないとだめ。

アラインメントではRoland HaertelがESDからアラインメントをするパッケージを作っている。それは新しいTrk::Trackクラスを使っているので、今後の参考になる。UKで最近将来のDeveloperの卵向けにtutorialをEd Moyseがやったようだ。InnerDetectorのページにWikiのリンクがある。それの2までをLXRで例を探してやってみた。これもESDを使っているようである。プライマリバーテックスを求めて、インパクトパラメータをだしている。添付したのは2.3までの例。

2.4 はそのまま4行コピーすれば動く。でもerrorMatrixの部分はどこからとってくるのか不明。

課題3のピクセルのID helperを取ってくるところで、コンパイルエラーになる。またまたLXRでサーチしたら、

AtlasTest/DetDescrTest/IdDictTest/src/IdDictTest.cxx

というのがあった。これを参考にすればできそう。他にサマリー何とかというのも見ろとなっている。ヘルパーのポインタをクラスのメンバにしたのは失敗。

3.3のb-layerをはずして再フィットするのはコンパイルできた。コンテナクラスvectorとDatavectorの関係を調べよう。多分継承してるんでしょう。 IdHelperのポインターをクラスのメンバーにしてしまったので、前方参照する必要が有る。前方参照は独習C++のp99に説明有り。

#ref(): File not found: "ReFitTrack.cxx" at page "GeometryAlignment"

#ref(): File not found: "ReFitTrack.h" at page "GeometryAlignment"

Si-Softレポート

自分の計算機で解析

CVSでは新しいのは10.1.0でSiRobustAlignをするように書いてある。pacmanでathenaをいれた。AtlasG4Simのminbiasは20イベントできた。lxplusではEvtMaxをどう選んでも2004イベントでこける。よくわからないのでdata fileをcastorからコピーしている。中村君のページにやり方が書いてある。とりあえず

[atx13] /home/ryuichi/data/SiRobust > ssh lxplus.cern.ch "rfcat
/castor/cern.ch/user/h/haertel/ESD/InDetESD_Zee_4963events.root" >
InDetESD_Zee_4963events.root;date

とした。

結局READMEファイルにも或るとおり、2GB以上メモリーがないと動かないようだ。4963イベントを越えても動き続けて、1.2Gを越えた。1.5Gしかメモリーがないので止めた。

どうも1.5倍のイベント数を解析するようなので3000イベントにすると1.2Gぐらいで終わってくれた。plotChi2AlignHistos.cxxを使うと図がたくさん出てくるが、意味がよくわからない。

このほかAtlasG4SimのjobOptions_Geo2G4_Pythia.pyをやって20イベントmin-biasイベントを作ってみた。その後、Digitizationをcoして、DC2となってたのでseg fault. Rome-Initialにしてやりなおし。Digitはできた。

alignment program

To look at the alignment codes CVS areas, follow the following links: Robust Alignment:

http://isscvs.cern.ch/cgi-bin/viewcvs-all.cgi/offline/InnerDetector/InDetAlignment/SiRobustAlign/?cvsroot=3Datlas

Global Chi2 Alignment:

http://isscvs.cern.ch/cgi-bin/viewcvs-all.cgi/offline/InnerDetector/InDetAlignment/SiAlignment/?cvsroot=3Datlas

For the Global Chi2 Alignment, I just freshly added the stuff (the old prototype code is also there in src/proto for archiving). Most of the technical functionalities are tested. But there is still testing needed on the check of numbers, etc...

In particular, the output has not been tested yet, and there is still developement going on for the format of the output, the interaction with the Databases in the future, etc...

So you can run the program on events, produce bigvector/bigmatrix and/or do the solving but as I said the output has not been tested on a reasonable sample. Only detailed intermediate steps debugging has been performed for the ingredients.

I'll prepare some notes about problems I have observed and for which we should be aware.

Cheers,

Adlene.

Cosmic run Wiki Page

https://uimon.cern.ch/twiki/bin/view/Atlas/InDetCommissioning

Engineering Drawing の見つけ方

まずhpglのviewerをインストールします。

#ref(): File not found: "hpglview-530_Win95_NT_CERN.zip" at page "GeometryAlignment"

それからEDMSのNavigatorページに飛んで、図面を探します。Atlas Detector->Inner Detector->Semi Conductor Tracker->PBS-Barrel SCT->SCT-Barrels->Barrel 3 のなかに"ATLAS SCT BARREL - MOD ARRANG.B3+BARREL ENDS(TA11?)"というアッセンブリーの図面がありますが、この図面はCDDをクリックし、Visualize Drawingの項目のpre-visualizeをクリックすると見ることができます。

https://edms.cern.ch/cedar/plsql/cedarw.home?cookie=3287703&project=ATLAS

Oxford大学でのバレルのアッセンブリーの写真

http://natsci.kyokyo-u.ac.jp/~takasima/picture/zpOxford/index.html

アッセンブリーの本家オックスフォード大学のページ

http://www-pnp.physics.ox.ac.uk/~viehhaus

Calibration and Alignment page

http://atlas.web.cern.ch/Atlas/GROUPS/DATABASE/project/calib/

GeoModelではGeoAlignableTransformというのでGeometryの変換行列を作ってやると、あとでそこにDeltaというずれの行列を足せるようだ。ずれを変換行列どの順番のところで入れるのかはよくわからない。HepTransform3DはOpenGLと同様の回転のあと平行移動する4行4列の変換行列。このDeltaを作成するのはInnerDetector/InDetAlignment/InDetAlignAlgsで基本的にIOVSvcのパッケージを使う。MySQLで読めるはずだが、まだ高嶋は成功してない。PoolのデータとしてDeltaを書くのもあるようだがよくわからない。

Simulation on lxatl

SUSYの勉強もしないといけないので、東大のlxatlでEvent Generationをしてみた。まずは そのまま動かす。電子3イベント。でも最近はトップのページが元のmacroで動くものに戻っている。このG4AtlasAppsはgeant4をpythonで動かすもので将来のもの。

http://atlas.web.cern.ch/Atlas/GROUPS/SOFTWARE/OO/simulation/geant4/G4AtlasApps/doc/index.html

mkdir -p SimExample/10.0.1
. cmt.sh
copy requirements
cd SimExample/10.0.1; cmt config; . setup.sh -tag=opt
source xxx/AtlasRelease-10-00-01/cmt/setup.sh
mkdir run
cd run; get_files PDGTABLE.MeV; get_files G4AtlasApps/jobOptions.G4Atlas_Sim.py
athena.py jobOptions.G4Atlas_Sim.py >& JO1.log &
tail -f JO1.log

このあと、muonにして100イベント作った。これはヒット。Digitizeの時は、DC2とするかRome-Initialとするか選ばないと当然失敗する。

InDetRecExampleの使いかた

Wikiをたどると、これをやれとなっている。以下の操作でrootファイルができる。

login on lxplus
mkdir -p InDetRecExample/10.0.1
source /afs/cern.ch/sw/contrib/CMT/v1r16p20040901/mgr/setup.sh
cd InDetRecExample/10.0.1
copy requirement file and set version 10.0.1
cmt config
. setup.sh -tag=opt
cmt co -r InDetRecExample-00-27-01 InnerDetector/InDetExample/InDetRecExample
cd InnerDetector/InDetExample/InDetRecExample/*/cmt
cmt config
gmake
. setup.sh
. ../share/POOL_Setup.sh
cd ../run
get_files -symlink -data PDGTABLE.MeV
athena.py jopOptions.py

rootファイルはできたけど、dictionaryがないというエラーがでて読めない。結局ダメでないですか。

misalignment simulation

R. Hawkins package jump

mkdir InDetAlignAlgs
cd InDetAlignAlgs
source /afs/cern.ch/sw/contrib/CMT/v1r16p20040901/mgr/setup.sh
mkdir 9.3.0
cd 9.3.0
cp typical requirement to create work area
cmt config
. setup.sh
cmt co -r iPatRecExample-00-19-04 Reconstruction/iPat/iPatRecExample
cmt co -r InDetAlignAlgs-00-00-23 InnerDetector/InDetAlignment/InDetAlignAlgs
cd Reconstruction/iPat/iPatRecExample/*/cmt
cmt config
gmake
. setup.sh
cd ../run
cp ../share/* ./
. ../share/iPatSetup.sh

以下は試しに対話的にするとき

athena.py -i jobOptions.py
athena> theApp.initialize()
athena> theApp.nextEvent()
 ...
athena> theApp.exit()

イベントを走らせてヒストグラムを作るときは

cp jobOptions.py myJobOptions.py
Histogram のところを探してコメントを外した後
theApp.initialize()
for ievent in range(100):
 theApp.nextEvent()
theApp.exit()
をたす。
athena.py myJobOptions.py >& myJobOptions.log &
tail -f myJobOptions.log
ls *.root
root

アラインメントの ntupleをつくるには

myJobOptions.pyのtheApp.initialize()のまえに
include( "InDetAlignAlgs/WriteSiNtuple.py" )
をいれる。
このままだとHbookのものができるので、あとでIDから
バレルのレイヤーをとってきたりする細かいことがやりにくいので
InDetAlignAlgs/shareのWriteSiNtuple.pyのところをRootに変えておく。
今度は500イベントとした。
athena.py myJobOptions.py
できたidalign.rootを手近なところにコピー。
root
TFile *file = TFile::Open("idalign.root")
file.ls()
file.cd("IDAL")
file.ls()
100->MakeClass("IDAL") 

別のやりかた

TFile *file = TFile::Open("idalign.root")
TTree *ttree=(TTree*)file->Get("IDAL/100")
ttree->Print()
ttree->MakeClass("IDAL")
とすると、IDAL.h と IDAL.C ができるので詳細な解析が可能となる。

以下のファイルを使ってとりあえずデータを見る。

#ref(): File not found: "idalign.root" at page "GeometryAlignment"

root
.L IDAL.C
IDAL t
t.GetEntry(12) //12 イベント目を見る。
t.Show()
TFile *file = TFile::Open("idalign.root")
TTree *ttreeID=(TTree*)file->Get("IDAL/110") //indexよりmoduleの情報を得る。
ttreeID->GetEntry(1) //index 1のモジュールをさす。
ttreeID->Show()      //表示する。
というわけで、どういう風にプログラムを書くかわかったのであとは書くだけ

このntupleの残差はスペースポイントのものでないようだ。これだと意味が良く分らないので、やっぱりwikiを辿っていくと書いてあるInDetRecExampleをためしてみようと思う。 いちおう軸方向から見たイベントを表示するプログラムをMakeClassから作ったものを少し変えて、作った。.q idalint.Cとして、やめるときはCtl-C。intはinteractiveのつもり。TChainというのは、rootファイルが何個もある時に、連続解析するもの、ここではいらないがひとのを真似たので残っている。

#ref(): File not found: "IDAL.h" at page "GeometryAlignment"

#ref(): File not found: "IDALint.C" at page "GeometryAlignment"

#ref(): File not found: "idalint.C" at page "GeometryAlignment"

Oracle data base

http://atlas-php.web.cern.ch/atlas-php/DDDB/node_tag_browser.php

CLHEP 1.8.0.0 のdoxygen file

http://natsci.kyokyo-u.ac.jp/~takasima/doxy/CLHEP1800/html/index.html

RobustAlign のdoxygen file

Robust Alignmentは注目するモジュールの位置のみをパラメータとしてカイ2乗の最小化を行うもの。これをすべてのモジュールについて個別に行い、その繰り返しを行ってアライメントする。このプログラムはアテナを使うものではない。このほかに全モジュールの位置と飛跡のパラメータをすべてパラメータとし、一度にカイ2乗の最小化を行ってアラインメントを行う方法も検討されている。

http://natsci.kyokyo-u.ac.jp/~takasima/doxy/SiRobustAlign/html/index.html

ダニエル ヒンソンのページ

http://www-pnp.physics.ox.ac.uk/~hindson/

FrontPage


添付ファイル: fileMA27test.tgz 847件 [詳細] fileMA27-drRAL95040.pdf 1737件 [詳細] fileproofDiag.pdf 1312件 [詳細] filesample.tgz 865件 [詳細] fileproofDiag.c 1084件 [詳細] filemyCheck.cc 1142件 [詳細] fileresAligned.png 782件 [詳細] fileLocalAlign23.png 782件 [詳細] fileLocalAlign01.png 771件 [詳細] fileL2L3AlignMod.png 780件 [詳細] fileL0L1AlignMod.PNG.png 797件 [詳細] fileL3Align.png 760件 [詳細] fileL2Align.png 777件 [詳細] fileL1Align.png 801件 [詳細] fileL0Align.png 778件 [詳細] fileSysShiftLayer.png 825件 [詳細] filept_compare.C 1161件 [詳細] fileptMisAlign.eps 1187件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-09-06 (木) 06:22:38 (3751d)