2010年6月23日水曜日

忘備録 rootでmt2(stranversmass)を使う。

この作業をやるのに約二日もかかってしまったので忘れないように。。。

アーキテクチャがちがうとか、いろんなエラーが出たのですが、問題は
・rootのversionが正しく入っていなかった。
・mT2のmakefileを十分に書き換えていなかった。

では順番通り書きましょう。
私のmacはIntel Core 2 Duo / OSⅩ10.6

まずrootはこちらから、
http://root.cern.ch/drupal/content/development-version-52702
Mac OS X 10.6 Intel and gcc 4.2.1, version 5.27/02 (44 MB).
をダウンロード

1.適当な場所で展開。( USERNAME/work/root/)
tar zxvf root_v5.27.02.macosx106-i386-gcc-4.2.tar.gz
pathの設定等は他のサイトを参照にしてください。
2.このrootを使えるようにするには
cd work/root/bin/
chmod u+x thisroot.sh

として、このrootを有効化
3.binの下で

. thisroot.sh

4.起動してみる。$ root
*******************************************
* *
* W E L C O M E to R O O T *
* *
* Version 5.27/02 26 April 2010 *
* *
* You are welcome to visit our Web site *
* http://root.cern.ch *
* *
*******************************************

ROOT 5.27/02 (trunk@33229, Apr 27 2010, 11:38:29 on macosx)

root [0]

こうやってrootは動いています。
自分のrootは
root-config
でわかります。

5.次はmt2をダウンロードThe Oxbridge MT2 / Stransverse Mass Library
sourcecode as of 22nd April 2010
↑これですね。
これを展開する前に、各makefileをいじる。makefileは/mT2/ , /mT2/src/, /mT2/bin/にあります。特に重要な/mT2/Makefile.includeの変更は以下、

#ROOTHOME := /afs/cern.ch/sw/lcg/app/releases/ROOT/5.22.00f/i686-slc5-gcc34-opt/root
ROOTHOME := /afs/cern.ch/sw/lcg/app/releases/ROOT/5.22.00g/osx105_ia32_gcc401_dbg/root
#ROOTHOME := /afs/cern.ch/sw/lcg/app/releases/ROOT/5.22.00g/osx105_ia32_gcc401/root
のところを↓
#ROOTHOME := /afs/cern.ch/sw/lcg/app/releases/ROOT/5.22.00f/i686-slc5-gcc34-opt/root
ROOTHOME := /USERNAME/work/root
#ROOTHOME := /afs/cern.ch/sw/lcg/app/releases/ROOT/5.22.00g/osx105_ia32_gcc401/root



#Enforce 32 bit environment
#Remove this line with a comment if you would rather not enforce this behaviour.
#ARCH := -m32 #をはずす

#Mac OS options
#MACOSOPTS := -dynamiclib -flat_namespace -undefined suppress
これも#をはずず()


こうやってmacのためのoptionをつけていく。すべてやったあとで、work/mT2/のところで
6.つくる

make

問題なければ、以下のメッセージが出るはず。
Good! Everything was built successfully.

Don't forget to put the directory(s) which includes the Minuit2 libraries, and the MT2 library in your LD_LIBRARY_PATH before you run the example programs. If you use bash or csh this might involve you doing something like one of the following:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:../src:/Users/USERNAME/work/root/lib
export ROOTSYS=/Users/USERNAME/work/root

or

setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:../src:/Users/USERNAME/work/root/lib
setenv ROOTSYS /Users/USERNAME/work/root

7.私はbashなので、こちらを実行。
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:../src:/Users/USERNAME/work/root/lib
export ROOTSYS=/Users/USERNAME/work/root


8.準備完了。例を実行してみる。

mT2/src/libMt2.so libMt2Standalone.so

この二つのライブラリを/mT2/examples/ にコピー

9.実行
$ ./examples/SUSYPhys_Mt2_222_Calculator_Example
Going to calculate MT2 with
pT_Vis_A = TwoVector: x = 410, y = 20
pT_Vis_B = TwoVector: x = -210, y = -300
pT_Miss = TwoVector: x = -200, y = 280
invis_mass = 100
----------------------------------------------------------------------
M_T2 : a variable for measuring masses when missing energy is expected.
If you use MT2 or this library, please cite:
(o) C.G.Lester, D.J.Summers
Phys.Lett.B.463:99-103 (1999) hep-ph/9906349
(o) A.J.Barr, C.G.Lester, P.Stephens
J.Phys.G 29:2343-2363 (2003) hep-ph/0304226
If you use MTGEN please also cite:
(o) C.G.Lester, A.J.Barr (2007) arXiv:0708.1028 (hep-ph)
JHEP 12(2007)102
If you use either of the Elliptic Bisection MT2 calculators, please also cite:
(o) H.Chen, Z.Han, arXiv:0810.5178
----------------------------------------------------------------------
Info in : DavidonErrorUpdator: delgam <>: VariableMetricBuilder: no improvement in line search
Info in : VariableMetricBuilder: iterations finish without convergence.
Info in : VariableMetricBuilder : edm = 1.09485e+07
Info in : requested : edmval = 0.2
Info in : VariableMetricBuilder: Tolerance is not sufficient, continue the minimization
Info in : edm = 43093.5
Info in : required : edmval = 0.2
Info in : VariableMetricBuilder: no improvement in line search
ANSWER: mt2 = 368.423 for SUSYPhys_Mt2_222 algorithm


問題なければ、上のようになるはず。

10.さて、root中でmt2を動かしてみる。work/mT2/でふたつの.Cのファイルがあるので、そいつをrootで動かす。

root [0] gSystem->Load("libMinuit2.so");
root [1] gSystem->Load("src/libMt2.so");
root [2] .L mt2_Basic_332_ROOT_example.C+
Info in : creating shared library /Users/tobiokakohsaku/work/mT2/./mt2_Basic_332_ROOT_example_C.so
root [3] mt2_Basic_332_ROOT_example();
----------------------------------------------------------------------
M_T2 : a variable for measuring masses when missing energy is expected.
If you use MT2 or this library, please cite:
(o) C.G.Lester, D.J.Summers
Phys.Lett.B.463:99-103 (1999) hep-ph/9906349
(o) A.J.Barr, C.G.Lester, P.Stephens
J.Phys.G 29:2343-2363 (2003) hep-ph/0304226
If you use MTGEN please also cite:
(o) C.G.Lester, A.J.Barr (2007) arXiv:0708.1028 (hep-ph)
JHEP 12(2007)102
If you use either of the Elliptic Bisection MT2 calculators, please also cite:
(o) H.Chen, Z.Han, arXiv:0810.5178
----------------------------------------------------------------------
412.628
412.628
412.628
412.628
412.628
412.628
412.628
412.628
412.628
412.628
root [4]

となれば成功!!

お疲れ様でした。

0 件のコメント: