ROOTで使うための自作クラス。今のところTGraphErrors
を継承してるOGraph
というクラスがTGraphErrors
よりも簡単に軸ラベルとプロット範囲を変えれるという機能のみ。初めて自分でクラス追加したので間違いがたくさんあるかも。
#使い方 ##ビルド
Makefile
の書き方はまだ勉強中。あとLinkDef.h
の書き方もよくわからない。OGraph
を使うには、Makefile
のあるディレクトリで
make OGraph
する (初めてのときは mkdir lib
してから)。すると同じディレクトリにOH1Dict.cxx
, OH1Dict.h
が作られる(邪魔なので別のディレクトリにつくりたいがやり方が分からない)。さらにlib
以下にlibOGraph.so
がつくられる。このライブラリファイルをROOTで読みこめばよい。
##ライブラリファイルの読み込み
CINTで使うには、.bashrc
とかに
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib:$HOME/git/OkaClass/lib
と書いて、OkaClass/lib
以下をロードできるようにする(ここでは~/git
以下にOkaClass
を置いた)。ROOTを開いたら、
gSystem.Load("libOGraph.so")
とすればOGraphのライブラリが読み込まれる (.rootlogon.C
に書いてもよい)。また、ファイルを直接指定して、
.L ~/git/OkaClass/lib/libOGraph.so
としても行ける?
#クラス ##OH1 TH1Dを継承している。今のところ宣言しただけで追加機能なし。
##OGraph TGraphErrorsを継承している。 ###メソッド ####軸ラベルの変更
OGraph::SetXTitle(char* title)
OGraph::SetYTitle(char* title)
でX軸、Y軸のラベルを変えられる。TGraph
とかだとGetXaxis()->SetTitle("title")
とかしないと行けないので一手間減る。
####プロット範囲の変更
TGraphでの範囲の変更は
How to set ranges on axis ? | ROOT
の一番下に書いてあるけどとても覚えられたものではないので、分かりやすくした。
OGraph::SetXRange(Double_t ufirst, Double_t ulast)
OGraph::SetYRange(Double_t ufirst, Double_t ulast)
でできる。変数ufirst
とかのuは多分userのu。
#参考リンク 以下の情報を参考にさせて頂きました。 ##Official
- Adding Your Class to ROOT: ClassDef | ROOT
- Selecting Dictionary Entries: Linkdef.h | ROOT
- Users Manual 第15章 (ウイングアーク1st株式会社 さんによる翻訳)
##Unofficial
- MyClass [KamonoWiki]
- ROOTに自作クラスを追加する - HongoWiki
- PukiWiki - memo/root/クラスの追加
- ROOT入門-ROOTのマクロで、自作クラスを使う - あやしいむつあい技術
以下メモ。
#To Do的な
- Dictファイルの位置をどうにかしたい
- ライブラリをひとつにまとめたい
$ROOTSYS/test
では各々にDictがあってlibも個別にあるのでそれが普通なのかな。
LinkDef.h
はこれでいいのかわからないけど一つで事足りたのでこうしておく。