Table of Contents
動かしてみる。
C/C++ では
という手順を踏んできました。
ROOT は
といった方法で使うことが出来ます。
「対話的に」とは,一行ごとにコマンド(?)を実行するという意味です。 非常にお手軽にできますが,毎回コマンドを入力するのが手間かもしれません。
ROOT を起動するにはターミナルで “root” と打ちます。
[gnukazuk 11:45:44 ~] $ root
------------------------------------------------------------
| Welcome to ROOT 6.12/04 http://root.cern.ch |
| (c) 1995-2017, The ROOT Team |
| Built for macosx64 |
| From tag v6-12-04, 13 December 2017 |
| Try '.help', '.demo', '.license', '.credits', '.quit'/'.q' |
------------------------------------------------------------
root [0]
カーソルが “root [0] ” のあとに来るので,ここから対話的にインタプリタを操作することができます。 例えば
root [0] int number = 2;
root [1] double value = -1.1
(double) -1.1000000
root [2] cout << number << " " << value << endl;
2 -1.1
root [3] for( int i=0; i<10; i++ ) { cout << i << endl; }
0
1
2
3
4
5
6
7
8
9
なんてできます。 “[1]” では行のおわりを示す “;” が抜けていますが,エラーはでません。 文法に厳密に書かなくても動いてしまうのが良い点でもあり,悪い点でもあります。
終了するには “.q” を入力します。
root [4] .q
[gnukazuk 11:50:22 ~] $
C/C++ のソースファイルと同じようにプログラムを書き, root コマンドの引数に与えることでマクロを実行することができます。 最近のメジャーアップデートでできなくなったと思っていたのですが,ファイルの中身を “{}” でくくるだけでも実行できました。
# ファイルを作る
[gnukazuk 11:53:03 temp] $ emacs macro.cc &
# ファイルの中身は hello world
[gnukazuk 11:53:11 temp] $ cat macro.cc
{
cout << "Hello!" << endl;
}
# 実行してみる
[gnukazuk 11:53:33 temp] $ root macro.cc
root [0]
Processing macro.cc...
Hello!
root [1]
マクロ実行後は続けて対話的に使うことができます。 マクロ実行後に ROOT を自動で終了させたいときは “-q” オプションを実行時に与えましょう。
[gnukazuk 11:58:35 temp] $ root -q macro.cc
Processing macro.cc...
Hello!
[gnukazuk 11:58:42 temp] $
ROOT マクロでは,ファイル名と同じ名前の関数がはじめに実行されます。
[gnukazuk 12:00:21 temp] $ cat macro.cc
int macro()
{
cout << "Hello!" << endl;
return 0;
}
[gnukazuk 12:00:23 temp] $ root -q macro.cc
Processing macro.cc...
Hello!
(int) 0
関数を追加することもできます。
[gnukazuk 12:01:31 temp] $ cat macro.cc ; root -q macro.cc
int Sum( int num1, int num2 )
{
return num1 + num2;
}
int macro()
{
cout << Sum( 2, 10 ) << endl;
return 0;
}
Processing macro.cc...
12
(int) 0
発展的なものなので,後回しでもいいと思います。 興味のある人は 宮地先生のページ を参考にしてみましょう。