Example to write & read a Tree built with a complex class inheritance tree.
It demonstrates usage of inheritance and TClonesArrays This is simplified / stripped extract of an event structure which was used within the Marabou project.
To run this example, do:
root > .x tree131_clones_event.C
#ifndef CLONESA_EVENT_SECOND_RUN
void tree131_clones_event()
{
std::string
s1(__FILE__);
gROOT->ProcessLine(
TString(
".L ") + dir +
"/clones_event.cxx+");
#define CLONESA_EVENT_SECOND_RUN yes
gROOT->ProcessLine(
"#include \"" __FILE__
"\"");
gROOT->ProcessLine(
"tree131_clones_event(true)");
}
#else
void write_clones_event()
{
if (
gROOT->GetVersionInt() < 30503 ) {
std::cout << "Works only with ROOT version >= 3.05/03" << std::endl;
return;
}
if (
gROOT->GetVersionDate() < 20030406 ) {
std::cout << "Works only with ROOT CVS version after 5. 4. 2003" << std::endl;
return;
}
auto hfile =
TFile::Open(
"clones_event.root",
"RECREATE",
"Test TClonesArray");
auto tree =
new TTree(
"clones_event",
"An example of a ROOT tree");
tree->Branch("top1", "TUsrSevtData1", &event1, 8000, 99);
tree->Branch("top2", "TUsrSevtData2", &event2, 8000, 99);
for (
Int_t ev = 0; ev < 10; ev++) {
std::cout << "event " << ev << std::endl;
event1->SetEvent(ev);
event2->SetEvent(ev);
tree->Fill();
if (ev <3)
tree->Show(ev);
}
tree->Write();
tree->Print();
delete hfile;
}
void read_clones_event()
{
auto tree = hfile->Get<
TTree>(
"clones_event");
tree->SetBranchAddress("top1", &event1);
tree->SetBranchAddress("top2", &event2);
for (
Int_t ev = 0; ev < 8; ev++) {
tree->Show(ev);
std::cout << "Pileup event1: " << event1->GetPileup() << std::endl;
std::cout <<
"Pileup event2: " << event2->
GetPileup() << std::endl;
event1->Clear();
}
delete hfile;
}
void tree131_clones_event(bool )
{
write_clones_event();
read_clones_event();
}
#endif
int Int_t
Signed integer 4 bytes (int).
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
void Clear(Option_t *="")
A TTree represents a columnar dataset.
- Author
- The ROOT Team
Definition in file tree131_clones_event.C.