#ifdef ACTUAL_RUN
void tree108_write()
{
TFile f(
"tree108.root",
"RECREATE");
TTree t4(
"t4",
"A Tree with Events");
t4.Branch("event_split", &event,16000,99);
t4.Branch("event_not_split", &event,16000,0);
char etype[20];
for (
Int_t ev = 0; ev < 100; ev++) {
sprintf(etype, "type%d", ev%5);
event->SetType(etype);
event->SetHeader(ev, 200, 960312, random);
event->SetNseg(
Int_t(10 * ntrack + 20 * sigmas));
event->SetFlag(
UInt_t(random + 0.5));
event->SetTemperature(random + 20.);
}
for (
UChar_t i0 = 0; i0 < 4; i0++) {
for(
UChar_t i1 = 0; i1 < 4; i1++) {
event->SetMatrix(i0, i1,
gRandom->Gaus(i0 * i1, 1));
}
}
for (
Int_t t = 0; t < ntrack; t++) event->AddTrack(random);
t4.Fill();
event->Clear();
}
t4.Print();
}
void tree108_read()
{
auto t4 =
f->Get<
TTree>(
"t4");
auto event =
new Event();
auto bntrack = t4->GetBranch("fNtrack");
auto branch = t4->GetBranch("event_split");
branch->SetAddress(&event);
bntrack->GetEntry(i);
if (event->GetNtrack() > 587)
continue;
nb += t4->GetEntry(i);
nselected++;
if (nselected == 1)
t4->Show();
event->Clear();
}
return;
t4->StartViewer();
}
void run()
{
Event::Reset();
tree108_write();
Event::Reset();
tree108_read();
}
#else
void tree108_tree()
{
gROOT->ProcessLine(
".L " + tutdir +
"/io/tree/Event.cxx+");
gROOT->ProcessLine(
"#define ACTUAL_RUN yes");
gROOT->ProcessLine(
"#include \"" __FILE__
"\"");
gROOT->ProcessLine(
"run()");
}
#endif
unsigned char UChar_t
Unsigned Character 1 byte (unsigned char).
long long Long64_t
Portable signed long integer 8 bytes.
Using a TBrowser one can browse all ROOT objects.
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
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.
A TTree represents a columnar dataset.