ROOTの解析で、多数のデータを取り扱うにはfor文でループを作るのが得策です。

ヒストグラムの名前をつけることはFormというコマンドを使えば簡単にできますが、定義したヒストグラムには同じ事ができません。

ヒストグラムの名前を配列として認識させるには次のサンプルプログラムを参考にしていただければ可能です。

実行後、AAA->Draw();

と入力すればヒストグラムを表示することができます。

 

char fin[][10]=    // 読み込むデータのファイル名を定義。はじめの[]は配列の数で、特に数を入れなければ{}の中身を自動的に数えてくれます。次の[]の数字は文字列の文字数です。

{

"aaa.dat",

"bbb.dat",

"ccc.dat"

};

 

char HName[][10]=

{

"AAA",

"BBB",

"CCC"

}

 

void kaiseki() {

TObjArray *hists = new TObjArray(); //ヒストグラムなどのオブジェクトを配列として扱うための定義です。

TH1F* sim;  // 各ヒストグラムの配列です。

Float_t data;

for (Int_t k=0; k<<3; k++){  //ループを回して多数のファイルとヒストグラムを作ります。

  sim = new TH1F(HName[k], "Sim;ENERGY(keV);COUNTS", 4000, 0, 4000); // 各ヒストグラムの定義

  hists->AddLast(sim);  // 定義したヒストグラムをオブジェクトの配列に加えます。

  ifstream f(fin[k]); // データのファイルを開きます。

 while ( f >> data){

   sim->Fill(data); // 先ほど定義したヒストグラムにデータを入れていきます。

  }

 f.close();  // 念のためにファイルを閉じておきます。

}

長期出張から帰ってきて、久しぶりに研究室のパソコンを起動。

早速仕事をするぞ!

学会のプロシーディングス書くぞ!

といろいろソフトを起動したら、どれもこれも

「新しいアップデートがあります」

「インストールします」

これで朝の貴重な30分がなくなりました。

 

おっと、

 

ようやくアップデートが終わりました。

気を取り直してお仕事に励みます。

この前、学会の地方支部大会で学生に発表をしてもらった。

全国の大会に出る前に地方支部でデビュー戦という感じです。

地方支部だと我々の分野をやっている研究者は少ないので質問が出にくくなります。しかしながら、多くの人が興味を持っているようで、非常に根源的な、「そもそもこの研究の意義は何か」とか「探している現象の原理は何か」といった非常に大事な質問が出ます。

本来この辺の知識はきちんと持っていてほしいのですが、目の前の実験をこなすことに集中しすぎて研究の意義についてよく考えていないことが多いものです。

先日の私のゼミの学生のデビュー戦でもそのような基本的な質問が出ましたが、見事に完ぺきな回答をしました。非常によく勉強していました。

100点満点で100点以上をつけたい気分で、その夜はおいしい食事になりました。

この調子で頑張ってもらいたいところです。