Abstract class and TStreamerInfo

Hi,

We’re using ROOT 5.18.00c on red hat 9 linux. I thought I had sent this post out a couple of days ago - but it appears to me that I did not (which is probably a good thing, as it was poorly written)…

We have an abstract class which does not derive from TObject. We do not use ClassDef with this class, though I had seen reference to possibly using ClassDef(className, 0) in this case. I’ll call this class A.

We have a number of classes which derive from class A and TObject.

When we write data, I see class A included with the TStreamerInfo in our output files.

However, I have some colleagues (and I cannot reproduce this) who merge two such files together using hadd, and the resulting file’s TStreamerInfo seems to have had class A’s description stripped. I have looked over their files, and indeed class A is missing from the TStreamerInfo.
When I run hadd - my output file does not have this problem. I am looking to get more information for my colleagues to determine what might be different about our set up. One oddity I see in my run of hadd, is this message after hadd has completed:
Unknown object type, name: TObject title: Basic ROOT object

Is anyone aware of such a situation or possible explanation for what might be going wrong with maintaining the full TStreamerInfo in this case?

Thanks,
Heather

Hi,

[quote], though I had seen reference to possibly using ClassDef(className, 0) in this case[/quote]This is indeed an option. Note that if your abstract class does contain data members (this is possible in C++), this would result in those data members not being saved; (So you could use ClassDef(className,1) instead).

[quote]Is anyone aware of such a situation or possible explanation for what might be going wrong with maintaining the full TStreamerInfo in this case? [/quote]Some issue in the carrying over of TStreamerInfo from one file to other (in hadd in particular) in v5.20.
Please try with 5.20 and if it still fails, send me a complete example.

Cheers,
Philippe.