EnglishJapanese Reload Front page List of pages Search Recent changes RSS of recent changes

Back to the top page

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();

}

}

Last-modified: Mon, 29 Oct 2012 16:14:57 JST (4459d)