Hatena::ブログ(Diary)

にいくらの日記

2014-12-02

ROOTで軸のラベルにテキストを使う方法

ってのを調べたんだけど、力技しかないみたい。

RootTalk: Re: [ROOT] user defined axis labels or how to change

ここにあるように、GetXaxis()->SetLabelOffset(99) でラベルを画面の外に追いやって、あとはTText::DrawTextでラベルをつけている。実行するとこんな感じになった。

f:id:MegumiNiikura:20141202154449g:image:w300

MacでANAROOTを使おうとして諦めた

最近ANAROOTで解析をしている。

Tools/Analysis/ANAROOT - RIBFDAQ

これをMacOSXにインストールする話は以前書いた。

MacにANAROOTをインストールする - にいくらの日記

この方法で一応Macでも動く。でも、最終的にANAROOTを使った解析をMacでやるのは諦めて、昨日書いたVMWare上のlinuxで解析をすることにした。

問題になったのは、ANAROOTで作ったライブラリを使って実行ファイルを作ろうとするとコンパイルできなかった。

 $ g++ MakeTree.C -I/$TARTSYS/include -L/$TARTSYS/lib -lanacore -lanaroot -lXMLParser `root-config --cflags` `root-config --libs` -o maketree
Undefined symbols for architecture x86_64:
  "TArtRecoPID::DefineNewTOF(char*, char*, double, int)", referenced from:
      _main in MakeTree-647583.o
  "TArtRecoPID::DefineNewBeam(TArtRIPS*, TArtTOF*, char*)", referenced from:
      _main in MakeTree-647583.o
  "TArtRecoPID::DefineNewBeam(TArtRIPS*, TArtRIPS*, TArtTOF*, char*)", referenced from:
      _main in MakeTree-647583.o
  "TArtRecoPID::DefineNewRIPS(int, int, char*, char*)", referenced from:
      _main in MakeTree-647583.o
  "TArtRecoPID::TArtRecoPID()", referenced from:
      _main in MakeTree-647583.o
  "TArtCalibPID::TArtCalibPID()", referenced from:
      _main in MakeTree-647583.o
  "TArtCalibDALI::TArtCalibDALI()", referenced from:
      _main in MakeTree-647583.o
  "TArtDALIParameters::LoadParameter(char*)", referenced from:
      _main in MakeTree-647583.o
  "TArtDALIParameters::Instance(char const*, char const*)", referenced from:
      _main in MakeTree-647583.o
  "TArtCalibFocalPlane::FindFocalPlane(int)", referenced from:
      _main in MakeTree-647583.o
  "TArtBigRIPSParameters::LoadParameter(char*)", referenced from:
      _main in MakeTree-647583.o
  "TArtBigRIPSParameters::SetFocusPosOffset(int, double)", referenced from:
      _main in MakeTree-647583.o
  "TArtBigRIPSParameters::Instance(char const*, char const*)", referenced from:
      _main in MakeTree-647583.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [maketree] Error 1

こんな感じ。いろいろと調べてみたけど、結局わからず。エラーを検索してよく見かけるのは、コンパイルのオプションで-stdlib=libstdc++をいれると良い、というもの。でもこれはroot-config --cflagsと整合性がとれてない気がする。

$ root-config --cflags
-pthread -stdlib=libc++ -m64 -I/opt/root/pro/include

なんとなくANAROOTではautogen.shでいろいろと自動設定しているので、その時のコンパイルオプションと手動で書いたもののオプションい整合性がなくてうまく動かないのかと思ってるんだけど、よくわからないので結局諦めることにしました。