(旧)研究メモ

kennkyuumemo

スタック領域、ヒープ領域、静的領域

スタック領域

関数を呼び出すとき、もとの関数でのローカル変数などの情報を一時的に保存しておく領域

ヒープ領域

newやmallocなどで確保する領域

静的領域

グローバル変数が配置される領域


スタック領域はプログラムの起動時に一度に確保されるため、再帰関数を呼び出す回数に制限がある。

ROOTで図形描くときに背景を透明にする

粒子の位置を再構成したグラフとかに、検出器を一緒に描こうと思ってTArcとか使ってみたら、描く順番によってはTArcのほうが上に来ちゃってデータ点が上塗りされてしまってうざいなって思うことがありました。そういう時は、

obj->SetFillStyle(0);

とやると円弧の中身の部分?が透明になってデータ点が消えたりしないので描く順番とか気にしないで良くなる。

あと、円弧の中心から伸びる直線も邪魔だなって時は描くときに

obj->Draw("only");

で、弧だけ描ける。

構造体

struct 構造体タグ名 {メンバたち};
struct 構造体タグ名 構造体変数名;

struct date {
    int year;
    int month;
    int day;
};

struct date d = {2014, 5, 15};

cout << "Today is "d.year << "/" << d.month << "/" << d.day << endl;

出力は

Today is 2014/5/15

となる。Cの場合struct書くのめんどいときtypedefするけどC++はしなくてもいいのでたいていstruct書かない。

構造体のメンバはすべて公開される。C++で、classとstructの違いはこれくらい

ROOTでTCanvasを出さないようにする

TCanvasはなにかとDrawする必要があるが、出てきた画像を見ることが目的ではない場合、立ち上がる画面はただただ邪魔であるので

gROOT->SetBatch();

としてバッチモードで実行するとキャンバスが立ち上がらない

ROOTでヒストグラムをたくさん作る

同じビン、最大値、最小値のヒストグラムをたくさん作りたいとき、
例えば

TH1D* h[10];
for(int i=0;i<10;i++){
    h[i] = new TH1D(Form("h[%d]",i), bin, min, max);
}

てなかんじでForm使うと簡潔に書ける。

Fedora19でしばらく困ってたこと

研究棟が停電してたとか、なんかの拍子にFedora19が入ったPCが変になったぽくて、sshでは入れるけどディスプレイになにも出てこない状態がしばらく続いてた。

そこで再起動してみると、ログイン画面までは行くんだけどログインした後に画面が硬直する。CUIでは操作できるっぽい。

調べるとGNOMEが入っていないというか消えてしまっているというか、でまあインストールしようと

$ sudo yum groupinstall "GNOME Desktop Environment"

って打つんだけどこんなもんないって言われる。
さらに困ったんだけどどうもこの"GNOME Desktop Environment"っていうものは、最近 "Desktop" で通じるらしく

$ sudo yum groupinstall "Desktop"

とするとインストールが始まる。

終わったら、

$ startx

ってやったらGUIのデスクトップの設定画面が立ち上がった。

なんかいろいろ最初からしないといけないっぽいけど一応解決しました