ここに私が書いたコードはありますが、正常に動作しますが、実際にはイベントをロードしていないようです...代わりにヒストグラムとcoutを1つの任意の小数で埋めるようです。なぜこのループは適切なイベントをロードしませんか?
include "TTree.h"
include "TFile.h"
include "TRandom.h"
include "TTree.h"
include "TCanvas.h"
include "TStyle.h"
include <iostream>
include "TH1.h"
include "TChain.h"
using namespace std;
void readtestsimple(){
TFile *file = TFile::Open("/file/");
TTree* comp_tree = (TTree*)file->Get("_compress_tree");
TChain* compchain = new TChain("_compress_tree");
compchain->Add("/file/");
TH1D *comp = new TH1D("comp","_compression",100,0,0.05);
Double_t _compression, _compressionU, _compressionV, _compressionY, _ch_compression;
Int_t _ch;
comp_tree->SetBranchAddress("_compression",&_compression);
comp_tree->SetBranchAddress("_compressionU",&_compressionU);
comp_tree->SetBranchAddress("_compressionV",&_compressionV);
comp_tree->SetBranchAddress("_compressionY",&_compressionY);
Long64_t nentries = compchain->GetEntries();
Long64_t nb = 0, nbytes = 0 ;
for (Long64_t i=0; i<nentries; i++) {
Long64_t entry = compchain->LoadTree(i);
if (entry <0) break;
nb = compchain->GetEntry(i); nbytes += nb;
cout << "entry = " << nb << endl;
cout << "compression = " << _compression << endl;
comp->Fill(_compression);
}
cout << "entries = " << nentries << endl;
}
そして私が手出力は、この長い繰り返しである:
entry = 36
compression = 1.54768e-316
entry = 36
compression = 1.54768e-316
entry = 36
compression = 1.54768e-316
(そして最後に、エントリの正しい数)。
正しいエントリを読み上げるにはどうすればよいですか? 助けてください!
私は、HTTPS(あなたは[ルートフォーラム]でこれを掲示することをお勧め: //root.cern.ch/phpBB3/)、おそらくそこには、より多くのダウンボントとより多くのヘルプが得られます;) – user463035818
あなたのコードは冗長であるようです。 'TFile'と' TTree'を 'TTree'で開くか、(特にあなたのデータが多くのファイルに広がっている場合)、入力ファイルを' TChain'と 'Add'で作成します。そこから 'SetBranchAddress'と' GetEntry'を使って 'TChain'か' TTree'を使います。 – pseyfert
ええ、私はそれが実現したことに気付きました。今度はcompchain-> Add( "file") – lasagna