#include #include "TTree.h" #include "TFile.h" class Test : public TObject { public: Double_t testVar; ClassDef(Test, 1) }; ClassImp(Test); Test *CreateTest(TTree *tr) { Test *module = new Test(); tr->SetBranchAddress("testClass", &module); return module; } void writeTree() { TFile *f = new TFile("test.root", "RECREATE"); TTree *tr = new TTree("test", "test"); Test *t = new Test(); tr->Branch("testClass", t); for(int i = 0; i < 10; ++i) { t->testVar = i; tr->Fill(); } tr->Write(); f->Close(); } void readTreeWorks() { TFile *f = new TFile("test.root"); TTree *tr = (TTree*)f->Get("test"); Test *t = new Test(); tr->SetBranchAddress("testClass", &t); for( auto i = 0; i < 10; ++i) { tr->GetEntry(i); std::cout << t->testVar << std::endl; } } void readTreeFails() { TFile *f = new TFile("test.root"); TTree *tr = (TTree*)f->Get("test"); Test *t = CreateTest(tr); for( auto i = 0; i < 10; ++i) { tr->GetEntry(i); std::cout << t->testVar << std::endl; } }