I work on GLAST and we are considering a move to ROOT v4.08. We have noticed the update concerning schema evolution for foreign classes and are intrigued. Before going too far down this path - we would like to be certain to understand any pitfalls.
We use Gaudi as our framework, and would clearly like to use the same classes in a persistent form as we use on Gaudi transient data store.
Our current set of output classes, are strictly native ROOT. We make use of TClonesArray, where possible, for speed… I cannot help wondering about I/O speed if we did make a move to a set of foreign classes. I could imagine we would use std::vector or std::map rather than TClonesArray.
We have avoided using some stl constructs such as std::map in our ROOT classes, due to some problems we have had in the past. I assume that there is full stl support now?
Are there any specific things we should watch out for as we consider migrating all of our existing ROOT data classes to be non-ROOT specific?
(One would be a loss of backwards compatibility with any data files we have already generated - but we may be at a point in our evolution where that is ok)
Surely there are tradeoff here and we should make sure we go into this with our eyes open.