void RIDF2Tree(){
//ライブラリをロードします。
gSystem->Load("libanacore.so");
// RIDFファイルからイベントブロックを保存するためのオブジェクトを作成します。
TArtEventStore *estore = new TArtEventStore();
// RIDFファイルを開きます。
estore->Open("run0001.ridf");
// estoreからTArtRawEventObjectのポインターを取得します。
TArtRawEventObject *rawevent = estore->GetRawEventObject();
// 作成した各オブジェクトを関連付けるために初期化します。
estore->Initialize(rawevent);
// tree objectを作成します。
TTree *tree = new TTree("tree","data");
// treeに所属するメンバーを作成します。
Int_t adc[32];
// treeにbranchを登録します。
tree->Branch("adc",adc,"adc[32]/I");
// イベントブロックに対するループを定義します。
//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
adc[ch] = val.
}
// rawevent objectをクリアします。
rawevent->Clear();
// treeをfillします。
tree->Fill();
}
}