Hi ROOT team and others, Is it possible to have some sort of sub-entries in a branch of a Tree? What I'd like to do is something like: TClonesArray* array = new TClonesArray("TParticle"); TTree* tree = new TTree("tree", "A Tree"); TBranch* branch = new TBranch("branch",&array); for (Int_t runNo = 0; runNo < 100; runNo++) { for (Int_t eventNo = 0; eventNo < 1000; eventNo++) { for (Int_t trackNo = 0; trackNo < 10000; trackNo++) { new ((*array)[trackNo]) TParticle(0,0,0,0,0, 1.1, 2.2, 3.3, 4.4, 1.1, 2.2, 3.3, 4.4); } branch->Fill(); } tree->Fill(); } So that "tree->GetEntries() == 100", while for each of these entries, "branch->GetEntries() == 1000", to make up a grand total of 100,000 arrays of 10,000 TParticle's (circa 137 GB of data!). Then one could loop on each "tree"-level entry, and for each of those loop on each "branch"-level entry to get to the arrays. One way to do something similar, is to define a class, like class Event : public TObject { Int_t fRun; Int_t fEvent; TClonesArray* fTracks; public: Event(void) { fTracks = new TClonesArray("TParticle"); } TClonesArray* GetTracks(void) { return fTracks; } void SetEvent(int e) { fEvent = e; } void SetRun(int e) { fRun = e; } void Clear(void) { fTracks->Clear(); fEvent = fRun = 0; } ClassDef("Event",1) // RunEvent class } ; And then do tree->BuildIndex("fRun","fEvent"); after filling "tree" with Event objects. And then, when reading: while (tree->GetEntryWithIndex(runNo,eventNo) > 0) { ... } However, it's not really the same, and demands quote some bookkeeping. Anyway, I was just wondering. Also, I sort of stumbled over this the other day: On Unix - Suppose you've installed ROOT in "/usr/local/lib/root", then in some script you can put the line "#!/usr/local/lib/root", and the script may be executed from the command line. For example the following ROOT script may be executed from the command line: --- hello.C - cut below --------------------- #!/usr/local/lib/root/bin/root { cout << "Hello world" << endl; } --- EOF - cut above ------------------------- I'm reporting this, since I though it fun, and since I don't recall seeing anything like this mentioned anywhere. I prefer the name "script" for a file like the one above, since a script is interpretted, while a macro is translated or expanded. Cheers, Christian ----------------------------------------------------------- Holm Christensen Phone: (+45) 35 35 96 91 Sankt Hansgade 23, 1. th. Office: (+45) 353 25 305 DK-2200 Copenhagen N Web: www.nbi.dk/~cholm Denmark Email: cholm@nbi.dk
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:28 MET