(旧)研究メモ

kennkyuumemo

2014-01-01から1年間の記事一覧

Vimで日本語書いててコマンドモードにして日本語入力のままでうざいとき

[Mac] Vimのインサートモードを抜けるときにIMEをオフにするKeyRemap4MacBookのprivate.xml設定 [Mac] Vimのインサートモードを抜けるときにIMEをオフにするKeyRemap4MacBookのprivate.xml設定 | memobitsまじで快適なりましたありがとうございます

プログラムの 計算時間を知りたい時

#include <time.h> int main(){ clock_t time_start = 0; clock_t time_end = 0; time_start = clock(); //時間を測りたい処理 time_end = clock(); cout << "Computing time is " << double(time_end-time_start)/CLOCKS_PER_SEC << " [s]" << endl; }</time.h>

MacTeX、TeXShop、LaTeXiTをインストール

OSをMavericksにしてから調子が悪かったものの1つがLaTeXiTで、これはkeynoteに数式をはりつけるために使っていた。 いっそTeX環境を一新しようということで、MacTeXのインストールから始めた。 まず https://tug.org/mactex/ から.pkgをダウンロードして、…

Canvasに描画したはずなのに白紙で、クリックしてみたら描画される、みたいなとき

http://www-he.scphys.kyoto-u.ac.jp/member/n.kamo/wiki/doku.php?id=study:software:root:graphicの、「Styleの変更とModifiedとUpdateとDrawの関係」を読む。おおまかには、Drawの位置を変えるか、いろいろDraw optionやgStyleをいじった最後に canvas->U…

treeのbranchにつめたvectorを読み出す

TFile* file = new TFile("hoge.root"); TTree* t = (TTree*)file->Get("t"); vector<int>* vec = 0; t->SetBranchAddress("vec",&vec); ポインタを用意する</int>

treeのbranchにvectorをつめる

TFile* file = new TFile("hoge.root","recreate"); TTree* t = new TTree("t","tree"); vector<int> vec; t->Branch("vec",&vec,"vec/I"); : : : t->Fill(); vec.clear(); t->Write(); file->Close(); Branch()の三番目の引数が必要かどうかはよくわからん</int>

TGraphを大量に描く

TGraphをfor文使って大量に描きたいときは、二次元配列を使うとうまいことできる x[3][5] = {{…..}, {…..}, {…..}}; y[3][5] = {{…..}, {…..}, {…..}}; TGraph *g[3]; for(int i=0;i<3;i++){ g[i] = new TGraph(5, x[i], y[i]); g[i]->Draw(); }

2次元ヒストグラムのピークのところでの軸の値をそれぞれもってきたいとき

二次元ヒストグラムでなんかの分布を見て、一番データが集中してるところでのx, yの値がほしいときがよくある ヒストグラムの名前をhist1とすると、 int maxbin; int maximum_xbin; int maximum_ybin; int dammyz; double maximum_x; double maximum_y; maxb…

vectorにデータを入れてて、TGraphでグラフ描きたいとき

普通、配列にデータ入れてグラフ描くときは int x[3] = {1,2,3}; int y[3] = {1,2,3}; TGraph *g1 = new TGraph(3, x, y); g1->Draw("AP"); 的な感じでTGraphの引数には配列の名前を入れるvectorでこれをやるとエラーでるけど、引数を vector<int> x; vector<int> y; …</int></int>…

ROOT 色

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

スタック領域 関数を呼び出すとき、もとの関数でのローカル変数などの情報を一時的に保存しておく領域 ヒープ領域 newやmallocなどで確保する領域 静的領域 グローバル変数が配置される領域 スタック領域はプログラムの起動時に一度に確保されるため、再帰関…

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

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

malloc

#include<stdlib.h> void* malloc(size_t size); void* はとりあえずの型、使うときに具合的な型を入れる size_t sizeはsizeof()つかえばいい100byteのint型の領域を確保したいとき int*n; n = (int*)malloc(sizeof(int)*50); とか終わったらfree(n)で開放する</stdlib.h>

構造体

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/…

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で…

ROOT Treeからヒストグラム

t1->Draw("a[0]:a[1]"); から、 t1->Draw("a[0]:a[1]","","COLZ"); ってやると2次元ヒストがヒートマップみたいになる

ROOTでコンパイル

ROOTでコンパイルするためのMakefile TARGETS=Hello ROOTFLAGS = $(shell root-config --cflags) ROOTLIBS = $(shell root-config --libs) CXXFLAGS = -Wall -O2 $(ROOTFLAGS) CXXLIBS = $(ROOTLIBS) all: $(TARGETS) Hello: Hello.o g++ -o $@ Hello.o $(CX…

vector便利

配列って最初定義するときに要素数が必要だけど、vectorならいらない。基本的な使い方は、イテレータと合わせて #include <vector> #include <iostream> using namespace std; int main(){ vector<int> array; int i; for(i=0;i<10;i++){ array.push_back(i); } for(i=0;i<10;i++){ </int></iostream></vector>…

gslでできること一覧

gslでできること一覧(マニュアルより抜粋) 複素数 多項式の求根法 特殊関数 置換 組み合わせ 整列 線形代数 CBLAS ライブラリ 高速フーリエ変換 乱数 数値積分 乱数分布 ヒストグラム 統計 モンテカルロ積分 微分方程式 シミュレーティド・アニーリング ベク…

gslの使い方

gslとは、GNU Scientific Library。いろいろめんどくさい計算すぐできる。インストールしただけではただのライブラリ。例:ベッセル関数 \(J_0(x)\) の、\(x=5\) での値を計算して出力する #include <stdio.h> #include <gsl/gsl_sf_bessel.h> int main (void){ double x = 5.0; double y =</gsl/gsl_sf_bessel.h></stdio.h>…

Geant4でのデータ収集の仕方(2)

一番簡単なやり方、 ユーザフック exampleB1などで使われる。B1では線量計算をStep、Event、Run actionを自作して求める。 1. 構造物を作り、stepping actionをするvolumeを指定 2. Stepping actionクラス内で、今のStepがスコアすべき物体中にあるかどうか…

Geant4でのデータ収集の仕方(1)

Geant4でデータを取る(スコアリング)ために用意されているもの Hit 検出器のsensitiveな領域内での、Trackの物理相互作用のスナップショット。G4Stepオブジェクトに属する以下のような物理量を集める そのStepの位置と時刻 Trackの運動量、エネルギー そのSt…

サーチその2

リニアサーチは単純でとてもわかりやすいがもう少し高速化しようと思えばできる。 リニアサーチでは配列の範囲内で目的の数字と一致するまで、という繰り返し部分 while(n < num && a[n] != x){ n++; } if(n < num){ return n; } があったがここでいちいち配…

サーチ

サーチのアルゴリズム。リニアサーチは配列の前から順番に、見つけたいものを探す。 #include <stdio.h> #include <stdlib.h> #include <iostream> #include <time.h> #define NOT_FOUND (-1) #define N (10) using namespace std; int Linear_search(int x, int *a, int num){ int n = 0; while(n </time.h></iostream></stdlib.h></stdio.h>…

サーチ

サーチのアルゴリズム。リニアサーチは配列の前から順番に、見つけたいものを探す。 #include <stdio.h> #include <stdlib.h> #include <iostream> #include <time.h> #define NOT_FOUND (-1) #define N (10) using namespace std; int Linear_search(int x, int *a, int num){ int n = 0; while(n </time.h></iostream></stdlib.h></stdio.h>…

位置分解能

ガスチェンバーで、ストリップ間隔がdのとき 位置分解能は、yで読み出される確率をP(y)として、 なので

バブルソート

最近ソートについて勉強し直したのでメモしときます。ばらばらな配列を、前から順番に見ていって隣同士入れ替えていくのを何回も繰り返す。 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream> #define N 10 int x[N]; using namespace std; void BabbleSort(void){ i</iostream></time.h></stdlib.h></stdio.h>…

bashの環境設定ファイル

bashの設定ファイルを読み込む順番1. /etc/profile2. .bash_profile3. .bashrc4. /etc/bashrc5. .bash_logout(あれば).bash_profileの中で source .bashrcと書いて、.bashrcにいろいろ環境設定するのがよい