void RIDF2Histo(){
//ライブラリをロードします。
gSystem->Load("libanacore.so");
// RIDFファイルからイベントブロックを保存するためのオブジェクトを作成します。
TArtEventStore *estore = new TArtEventStore();
// イベントブロックからロウデータを保存するためのオブジェクトを作成します。
TArtRawEventObject *rawevent = new TArtRawEventObject();
// 作成した各オブジェクトを関連付けるために初期化します。
estore->Initialize(rawevent);
// RIDFファイルを開きます。
estore->Open("run0001.ridf");
// 描きたいヒストグラムを定義します。
TH1F *h1 = new TH1F("name","title",100,0.,1000.);
// イベントブロックに対するループを定義します。
//GetNextEvent関数を使うことで、次のイベントブロックが読み込まれます。
while(estore->GetNextEvent()){
// イベントブロック内の各セグメントに対するループを定義します。
// セグメントの個数を得るために、GetNumSeg関数を使用します。
for(int i=0;i<rawevent->GetNumSeg();i++){
// セグメントオブジェクトを生成し、セグメントブロックを代入します。
TArtRawSegmentObject *seg = rawevent->GetSegment(i);
// セグメント内のデータに対するループを定義します。
//データの個数を得るために、GetNumData関数を使用します。
for(int j=0;j<seg->GetNumData();j++){
//GetData関数を使ってセグメントからデータを取得しオブジェクトに代入します。
// データに含まれるそれぞれの値はGetXX関数を使って得ることができます。
TArtRawDataObject *data = seg->GetData(j);
int geo = data->GetGeo() // Geometry address
int ch = data->GetCh() // Channel number
int val = data->GetVal() // Value
h1->Fill(val);
}
// Clear rawevent object
rawevent->Clear();
}
}