Dear Rooters!
Maybe you can give me some advice whether to use TFolder or TDirectory
when storing large amounts of TObjects in a TFile.
As an example of the dimensions of the project, let me present a
hypothetical project, namely to store data of all CERN employees in
one root file TFile:
For every person I create one folder/directory, which should store at
least two objects, called TPerson and TWorkPackage:
1, class TPerson: public TNamed {
fFirstName, fLastName, fAge, fGender, fAddress, etc
}
2, class TWorkPackage: public TNamed {
fCollaboration, fTask, etc
}
Now I want to create a TFile with the following hierarchy:
TFile("CERN.root"):
Departments
Department_1
Group_D1
SubGroup_D1a
SubGroup_D1b
etc
Group_D2
SubGroup_D2a
SubGroup_D2b
etc
Department_2
Group_D3
etc
etc
Collaborations
Collaboration_1 //e.g. ALICE
Group_C1
SubGroup_C1a
etc
Group_C2
Collaboration_2 //e.g. LHCb
Group_C1
etc
etc
Employees
I want to store every employee in the subgroup of his/her department,
and references to the employee in Collaboration(s) and in Employees.
At the moment I see three possibilities how to achieve this:
1, use TFolder only
2, use TDirectory only
3, use TDirectory and TFolder
1, TFolder only:
Advantages:
It is very easy to create a TFolder hierarchy and to store TObjects
The TFolder hierarchy can be converted to TTree, which should make
finding data easy.
Problems:
How can I add/delete subfolders or change their content at a later
time and store these subfolders in TFile?
It seems that I have always to write the RootFolder to TFile:
fRootFolder->Write("",TObject::kOverwrite),
since it is not possible to write only the subfolder to TFile?
If I assume 10,000 employees, then this means writing more than
20,000 TFolders to TFile every time. If something happens during
writing, I could loose all data.
Is the complete folder hierarchy with all objects read into RAM?
2, TDirectory only:
Advantages:
It is possible to add/delete/change TDirectory at any time, and
only write the subdirectory of choice to TFile.
Problems:
Does it make sense to create more than 20,000 TDirectories?
What is the overhead?
How time-intensive is finding an object using the new function
TDirectory::FindObjectAny()?
3, Mixture of TDirectory and TFolder:
The main hierarchies Departments, Department_1, Collaborations,
Collaboration_1, Employees would be created as TDirectory.
The subhierarchies Group and SubGroup would be created as TFolder.
This is the approach I am currently trying to implement,
although I needed to inherit TMyFolder from TFolder for this
purpose.
Does this approach make sense or is there a better way?
It would be great if I would receive suggestions, how to handle
this task best.
Thank you in advance
Best regards
Christian
----------------------------------
C.h.r.i.s.t.i.a.n S.t.r.a.t.o.w.a
V.i.e.n.n.a, A.u.s.t.r.i.a
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:37 MET