memo/root/AnapawMode をテンプレートにして作成
ページ一覧
編集メニュー >
新規作成
編集
コピー
名前の変更
アップロード
添付ファイル一覧
バックアップ
開始行:
* AnapawMode [#ddd5462d]
→ aprootに改名・移動しました。
[[こちら>http://be.nucl.ap.titech.ac.jp/~kondo/moin/moin....
- &ref(AnapawMode-1.0.tar.gz);~
2011/08/08 TRintをもとにしてroot_anapawという実行形式を作...
名前がいまいちな感じがするのでそのうち変えるかもです。
- &ref(AnapawMode-0.1.tar.gz);~
2011/08/02 いくつかのコマンドを作成
- &ref(AnapawMode-0.0.tar.gz);~
2011/07/18 とりあえず第0バージョン
以下は各部分についての記述。
-----
* AnapawModeへの道 [#i6e8c3f2]
rootを使い始めてみました。が、慣れていないせいもあって使...
command HID option
のような入力でカタカタ解析したい。IさんがANAROOTなるもの...
** コマンドプロンプト [#s5c95af7]
ルートのコマンドはいちいち()をつけたりとか、””をつけたり...
コマンドプロンプトは以下の様にするとできる。
#include <iostream>
#include <readline/readline.h>
#include <readline/history.h>
using namespace std;
int compro()
{
char *line;
while(1){
line = readline( "ANA> ");
if ( (string)line == "exit" )
break;
// execute command
cout << line << endl;
free(line);
}
return 0;
}
mallocでメモリ領域を確保しているので必ずfreeで解放する必...
こんなに簡単に作れるのですね。。。コンパイルするときには
g++ -o compro compro.cc -L/usr/include/readline -lreadline
と打って上げないといけない。ROOTでやるにはどうするの?
*** ROOTでの走らせ方 [#i0b33882]
root [1] .L /usr/lib/libreadlibe.so
root [2] .L test/compro.cc+
root [3] compro()
で行けました。まだ↑とか効いていない。history?
** (ANA)PAWと(ANA)ROOTの比較 [#qae34cbd]
それぞれ良い点と悪い点があるかと思います。
|LEFT:300|LEFT:300|c
|(ANA)PAW|(ANA)ROOT|
|コマンドは全部打たなくてもOK|コマンドは全部入力する必要...
|aliasが使える|aliasない?()が必ずつく|
|ヒストグラムのIDは番号。hn/hbは便利|ヒストグラムは名前で...
|anaファイルは数字の羅列それだけではあっているかどうかは...
|古い。いつまでつかえる?|新しい|
||rootファイルのTreeは単位が分からない?結局単位を示すヘ...
** コマンドプロンプト その2[#wb1d2e40]
以下でヒストリーが使用可能になりました。
#include <iostream>
#include <readline/readline.h>
#include <readline/history.h>
#define MAX_HISTORY 3
using namespace std;
int compro()
{
char *line;
int history_no=0;
HIST_ENTRY *history = NULL;
while(1){
line = readline( "ANA> ");
if ( (string)line == "exit" )
break;
// execute command
cout << line << endl;
add_history(line);
if (++history_no > MAX_HISTORY){
history = remove_history(0);
free(history);
}
free(line);
}
return 0;
}
MAX_HISTORYで履歴数を定義している。
これで使い勝手の良いコマンドプロンプトが作れますな!line...
ht 101
とかだとプロットするマクロを走らせる。登録されていないコ...
** anamode(仮称)への課題 [#c790eaa7]
+ コマンドラインの解析 --> 単にスペースで単語分けるだ...
+ コマンド一覧から検索?
+ 各マクロの作成
+ ROOTを起動したら
anapawmode()
と打つだけでコマンドプロンプトが切り替わってほしい。-->起...
+ ヒストグラムのIdentifierは文字列のまま?それとも番号を...
-- もしくはそもそもヒストグラムの定義の時に番号にする?...
-- そもそもANAROOTはTREEを吐くの?Histogramを吐くの?ONL...
** クラス [#w5b33926]
コマンドラインの部分は以下のように分けるかな?
+ 上のreadlineを呼ぶところ
+ 入力を解析してマクロに投げる部分
単純に作るとglobaになるが、クラスを作って後者はprivateで...
root [1] .L Anapawmode()
としてもAnapawmodeのメンバは見えない。
どうやらClassDef、ClassImpが必要らしい。
[[ここ>memo/root/クラスの追加]]を参照。
** 一筋縄ではいかない! [#z06c3ba5]
以上のような感じでAnapawModeクラスを作成した。readlineの...
gROOT->ProcessLine(commandline);
たとえばcommandlineには"histo->Draw()"のような文字列が入...
でもだめ。AnapawModeをexitで抜けた後にプロットされる。う...
*** gSytem->ProcessEvents() [#b6d5ec4d]
gROOT->ProcessLine(commandline);
gSystem->ProcessEvents();
とするとプロットしてくれる!...んだけど2個目はプロットさ...
*** とりあえず。。。 [#o7c4054b]
とりあえずは以下で解決できる。
gROOT->ProcessLine(commandline);
gSystem->ProcessEvents();
gROOT->ProcessLine("c1->Update();");
Drawするとc1というCanvasが作られる。そいつをUpdateすると...
c1->でなくてgPad->のほうがまだましかな?でもCanvasをマウ...
*** Rint? [#la8e020e]
上の問題は結局readlineで入力待ちしているとROOTのEventLoop...
RintはROOTのInteractive Interface。この中でコマンドプロン...
#include "TRint_Anapaw.h"
int main(int argc, char **argv)
{
TRint_Anapaw *theApp
= new TRint_Anapaw("ROOT (ANAPAW)", &argc,...
// Init Intrinsics, build all windows, and ente...
theApp->Run();
return(0);
}
こんな感じで書いて別のプログラムを作成することになると思...
** 必要なコマンド一覧 [#gab9c4b9]
以下はANAPAWで使っていたコマンドの一覧(すべてではないか...
|LEFT:300|LEFT:300|c
|コマンド名|備考|
|fetch FILE|簡単にできる|
|hstore FILE|ファイル名を指定してヒストグラム/Treeを保存...
|hcut [HID HCUTNAME OPT]|treeだったらすぐにできる?|
|cdraw|hcutとコンビで必須|
|cpro [HID OPT]|treeならすぐ。ヒストグラムからでもまあで...
|clear [OPT]|どうするのかな?|
|hnt,hbt [OPT]||
|blow [XMIN XMAX YMIN YMAX], xblow, xyblow|あんまり使って...
|prx, pry|すぐできる|
|bnx, bny|すぐできる|
|slx, sly NSLI|すぐできる?|
|mami [MIN] [MAX]|あまり使っていなかった。すぐできる?|
|xstatus||
|hstatus||
|xfitg|xfitg [XMIN XMAX]とかでフィットの範囲をキーボード...
|figa||
|xval,xyval|T君が開発済み?|
|avy [HID OPT]|すぐできる?|
|chbin BF|どこかに転がっている|
|status|解析しているanaファイルやrawデータファイルを表示...
|lnx,lgx,...|必須|
|pson/psoff||
|listgate|ゲートに入った数を表示。あまり使っていなかった。|
とりあえずこんなもん?結構ありますね。
以下はanapawにはないけど、自分でマクロとか書いていて便利...
|LEFT:300|LEFT:300|c
|コマンド名|備考|
|plots HID1 HID2 [OPT]|HID1-HID2をプロット。|
|datplot FILE OPT [HID]|テキストをプロットさせる。|
|td HID FILE OPT|ヒストグラムのcontentsをテキストファイル...
** コマンド補完(検索) [#db91bb1a]
TAB補完かPAWのような部分的なコマンド文字列入力か、2通りが...
以下のプログラムでは、部分的に文字列を入力するとあらかじ...
#include <iostream>
#include <string>
using namespace std;
string Complement_Command(string line){
const int MAX_LIST=40;
string list[MAX_LIST]
= {"hnt","hbt","lnx","lgx","lny","lgy","lnz","lgz","...
"avy","cdraw","listgate","prx","pry","bnx","bny",...
"xstatus","hstatus","xfitg","figa","mami","blow",...
"fetch","hstore","clear","xval","xyval","chbin","...
"psoff"};
int i_matched[MAX_LIST];
string word;
int n_matched=0;
int i=0;
while (i<MAX_LIST && !(list[i].empty()) ) {
//search matched commands
word = list[i].substr(0,line.size());
if ( word == line ){
i_matched[n_matched]=i;
n_matched++;
}
i++;
}// while
if (n_matched<1){
cout<<"*** AnapawMode: No such a command"<<endl;
return "";
}else if(n_matched==1){
return list[i_matched[0]];
}else {
cout<<"*** AnapawMode: Ambigous command "<<line
<<". Possible "<<n_matched<<" commands are:"<<en...
for (i=0;i<n_matched;i++){
cout<<list[i_matched[i]]<<endl;
}
return "";
}// if nmatched
}
int main(int argc,char* argv[]){
string str[100];
int i;
for (i=0;i<argc;i++)
str[i] = argv[i];
if (argc>1)
str[1] = Complement_Command(str[1]);
return 0;
}
終了行:
* AnapawMode [#ddd5462d]
→ aprootに改名・移動しました。
[[こちら>http://be.nucl.ap.titech.ac.jp/~kondo/moin/moin....
- &ref(AnapawMode-1.0.tar.gz);~
2011/08/08 TRintをもとにしてroot_anapawという実行形式を作...
名前がいまいちな感じがするのでそのうち変えるかもです。
- &ref(AnapawMode-0.1.tar.gz);~
2011/08/02 いくつかのコマンドを作成
- &ref(AnapawMode-0.0.tar.gz);~
2011/07/18 とりあえず第0バージョン
以下は各部分についての記述。
-----
* AnapawModeへの道 [#i6e8c3f2]
rootを使い始めてみました。が、慣れていないせいもあって使...
command HID option
のような入力でカタカタ解析したい。IさんがANAROOTなるもの...
** コマンドプロンプト [#s5c95af7]
ルートのコマンドはいちいち()をつけたりとか、””をつけたり...
コマンドプロンプトは以下の様にするとできる。
#include <iostream>
#include <readline/readline.h>
#include <readline/history.h>
using namespace std;
int compro()
{
char *line;
while(1){
line = readline( "ANA> ");
if ( (string)line == "exit" )
break;
// execute command
cout << line << endl;
free(line);
}
return 0;
}
mallocでメモリ領域を確保しているので必ずfreeで解放する必...
こんなに簡単に作れるのですね。。。コンパイルするときには
g++ -o compro compro.cc -L/usr/include/readline -lreadline
と打って上げないといけない。ROOTでやるにはどうするの?
*** ROOTでの走らせ方 [#i0b33882]
root [1] .L /usr/lib/libreadlibe.so
root [2] .L test/compro.cc+
root [3] compro()
で行けました。まだ↑とか効いていない。history?
** (ANA)PAWと(ANA)ROOTの比較 [#qae34cbd]
それぞれ良い点と悪い点があるかと思います。
|LEFT:300|LEFT:300|c
|(ANA)PAW|(ANA)ROOT|
|コマンドは全部打たなくてもOK|コマンドは全部入力する必要...
|aliasが使える|aliasない?()が必ずつく|
|ヒストグラムのIDは番号。hn/hbは便利|ヒストグラムは名前で...
|anaファイルは数字の羅列それだけではあっているかどうかは...
|古い。いつまでつかえる?|新しい|
||rootファイルのTreeは単位が分からない?結局単位を示すヘ...
** コマンドプロンプト その2[#wb1d2e40]
以下でヒストリーが使用可能になりました。
#include <iostream>
#include <readline/readline.h>
#include <readline/history.h>
#define MAX_HISTORY 3
using namespace std;
int compro()
{
char *line;
int history_no=0;
HIST_ENTRY *history = NULL;
while(1){
line = readline( "ANA> ");
if ( (string)line == "exit" )
break;
// execute command
cout << line << endl;
add_history(line);
if (++history_no > MAX_HISTORY){
history = remove_history(0);
free(history);
}
free(line);
}
return 0;
}
MAX_HISTORYで履歴数を定義している。
これで使い勝手の良いコマンドプロンプトが作れますな!line...
ht 101
とかだとプロットするマクロを走らせる。登録されていないコ...
** anamode(仮称)への課題 [#c790eaa7]
+ コマンドラインの解析 --> 単にスペースで単語分けるだ...
+ コマンド一覧から検索?
+ 各マクロの作成
+ ROOTを起動したら
anapawmode()
と打つだけでコマンドプロンプトが切り替わってほしい。-->起...
+ ヒストグラムのIdentifierは文字列のまま?それとも番号を...
-- もしくはそもそもヒストグラムの定義の時に番号にする?...
-- そもそもANAROOTはTREEを吐くの?Histogramを吐くの?ONL...
** クラス [#w5b33926]
コマンドラインの部分は以下のように分けるかな?
+ 上のreadlineを呼ぶところ
+ 入力を解析してマクロに投げる部分
単純に作るとglobaになるが、クラスを作って後者はprivateで...
root [1] .L Anapawmode()
としてもAnapawmodeのメンバは見えない。
どうやらClassDef、ClassImpが必要らしい。
[[ここ>memo/root/クラスの追加]]を参照。
** 一筋縄ではいかない! [#z06c3ba5]
以上のような感じでAnapawModeクラスを作成した。readlineの...
gROOT->ProcessLine(commandline);
たとえばcommandlineには"histo->Draw()"のような文字列が入...
でもだめ。AnapawModeをexitで抜けた後にプロットされる。う...
*** gSytem->ProcessEvents() [#b6d5ec4d]
gROOT->ProcessLine(commandline);
gSystem->ProcessEvents();
とするとプロットしてくれる!...んだけど2個目はプロットさ...
*** とりあえず。。。 [#o7c4054b]
とりあえずは以下で解決できる。
gROOT->ProcessLine(commandline);
gSystem->ProcessEvents();
gROOT->ProcessLine("c1->Update();");
Drawするとc1というCanvasが作られる。そいつをUpdateすると...
c1->でなくてgPad->のほうがまだましかな?でもCanvasをマウ...
*** Rint? [#la8e020e]
上の問題は結局readlineで入力待ちしているとROOTのEventLoop...
RintはROOTのInteractive Interface。この中でコマンドプロン...
#include "TRint_Anapaw.h"
int main(int argc, char **argv)
{
TRint_Anapaw *theApp
= new TRint_Anapaw("ROOT (ANAPAW)", &argc,...
// Init Intrinsics, build all windows, and ente...
theApp->Run();
return(0);
}
こんな感じで書いて別のプログラムを作成することになると思...
** 必要なコマンド一覧 [#gab9c4b9]
以下はANAPAWで使っていたコマンドの一覧(すべてではないか...
|LEFT:300|LEFT:300|c
|コマンド名|備考|
|fetch FILE|簡単にできる|
|hstore FILE|ファイル名を指定してヒストグラム/Treeを保存...
|hcut [HID HCUTNAME OPT]|treeだったらすぐにできる?|
|cdraw|hcutとコンビで必須|
|cpro [HID OPT]|treeならすぐ。ヒストグラムからでもまあで...
|clear [OPT]|どうするのかな?|
|hnt,hbt [OPT]||
|blow [XMIN XMAX YMIN YMAX], xblow, xyblow|あんまり使って...
|prx, pry|すぐできる|
|bnx, bny|すぐできる|
|slx, sly NSLI|すぐできる?|
|mami [MIN] [MAX]|あまり使っていなかった。すぐできる?|
|xstatus||
|hstatus||
|xfitg|xfitg [XMIN XMAX]とかでフィットの範囲をキーボード...
|figa||
|xval,xyval|T君が開発済み?|
|avy [HID OPT]|すぐできる?|
|chbin BF|どこかに転がっている|
|status|解析しているanaファイルやrawデータファイルを表示...
|lnx,lgx,...|必須|
|pson/psoff||
|listgate|ゲートに入った数を表示。あまり使っていなかった。|
とりあえずこんなもん?結構ありますね。
以下はanapawにはないけど、自分でマクロとか書いていて便利...
|LEFT:300|LEFT:300|c
|コマンド名|備考|
|plots HID1 HID2 [OPT]|HID1-HID2をプロット。|
|datplot FILE OPT [HID]|テキストをプロットさせる。|
|td HID FILE OPT|ヒストグラムのcontentsをテキストファイル...
** コマンド補完(検索) [#db91bb1a]
TAB補完かPAWのような部分的なコマンド文字列入力か、2通りが...
以下のプログラムでは、部分的に文字列を入力するとあらかじ...
#include <iostream>
#include <string>
using namespace std;
string Complement_Command(string line){
const int MAX_LIST=40;
string list[MAX_LIST]
= {"hnt","hbt","lnx","lgx","lny","lgy","lnz","lgz","...
"avy","cdraw","listgate","prx","pry","bnx","bny",...
"xstatus","hstatus","xfitg","figa","mami","blow",...
"fetch","hstore","clear","xval","xyval","chbin","...
"psoff"};
int i_matched[MAX_LIST];
string word;
int n_matched=0;
int i=0;
while (i<MAX_LIST && !(list[i].empty()) ) {
//search matched commands
word = list[i].substr(0,line.size());
if ( word == line ){
i_matched[n_matched]=i;
n_matched++;
}
i++;
}// while
if (n_matched<1){
cout<<"*** AnapawMode: No such a command"<<endl;
return "";
}else if(n_matched==1){
return list[i_matched[0]];
}else {
cout<<"*** AnapawMode: Ambigous command "<<line
<<". Possible "<<n_matched<<" commands are:"<<en...
for (i=0;i<n_matched;i++){
cout<<list[i_matched[i]]<<endl;
}
return "";
}// if nmatched
}
int main(int argc,char* argv[]){
string str[100];
int i;
for (i=0;i<argc;i++)
str[i] = argv[i];
if (argc>1)
str[1] = Complement_Command(str[1]);
return 0;
}
ページ名:
and
or
Menu
kondowiki
memo
exp
link
#lsx
Counter: 0, today: 0, yesterday: 0