Hi all, I created a large number of TFiles containing a tree with splitlevel = 99. The tree was generated using a mother event class MEvent : class MEvent : public TObject { public: enum ETypes {INCLUS, D0, DStar, UNKNOWN}; static const int MAXNTRA; static const int MAXNVER; static const int MAXNK0; static const int MAXND0; int number; int run; int type; int trmsk; double mD0; double thetakmin; int nver; TClonesArray *vertex; int ntra; TClonesArray *track; int nk0; TClonesArray *k0s; int nd0; TClonesArray *d0s; int npi; TClonesArray *pis; int nk; TClonesArray *ks; int ndstar; TClonesArray *dstars; ... each TClonesArray contains instances of a class that has only basic data types as attributes. I now face 2 problems, which are kind of related : - MakeClass seems to understand this structure, and one branch is created for each variable, which gets the address of a basic variable (unsigned, int, float, double, or arrays of these data types). The generated code does not depend anymore on the classes used to create the tree. Therefore, I was assuming that I had all I need to read this tree again, using the generated code. Yet when trying, I get these error messages : Warning in <TClass::TClass>: no dictionary for class MEvent is available Warning in <TClass::TClass>: no dictionary for class MVertex is available Warning in <TClass::TClass>: no dictionary for class MTrack is available Warning in <TClass::TClass>: no dictionary for class MK0 is available Warning in <TClass::TClass>: no dictionary for class MParticle is available Warning in <TClass::TClass>: no dictionary for class MD0 is available Warning in <TClass::TClass>: no dictionary for class MPi is available Warning in <TClass::TClass>: no dictionary for class MK is available Warning in <TClass::TClass>: no dictionary for class MDStar is available These are classes which should not be necessary anymore, cause split = 99 creates one branch in the tree for each data type contained in these classes. With root 3.00, this leads to a segmentation violation, but with root 3.03/07 there is no problem... so I upgraded the reading part (the trees are still created by root 3.00/06 - tell me if this is a problem... I could try to update the writing part) - Now the number of TFiles gets really large (~ 3000), and I would like to merge them together in about 10 files, in order to speed up looping a bit, and to handle them more easily. To do that I used TChain::Merge. Thinking my tree is containing only simple data types I first didn't set the branch addresses before merging. As a result, I only the very simple branches are filled in the output tree (basic data types of the event class, data stored in TClonesArrrays has disappeared) Then I tried to set the branch address of the mother class "event". This seems to work : the tree can be drawn, and some cuts can be applied. But now, when I chain these 10 output files together, the following messages are printed when going to a new file : Warning in <TBranchClones::Streamer>: Unknow class: MVertex. Cannot read BranchClones: vertex Warning in <TBranchClones::Streamer>: Unknow class: MTrack. Cannot read BranchClones: track Warning in <TBranchClones::Streamer>: Unknow class: MK0. Cannot read BranchClones: k0s Warning in <TBranchClones::Streamer>: Unknow class: MD0. Cannot read BranchClones: d0s Warning in <TBranchClones::Streamer>: Unknow class: MPi. Cannot read BranchClones: pis Warning in <TBranchClones::Streamer>: Unknow class: MK. Cannot read BranchClones: ks Warning in <TBranchClones::Streamer>: Unknow class: MDStar. Cannot read BranchClones: dstars Despite that I can use the chain interactively. Now, unlike the first one, this chain cannot be read by the MakeClass generated macro ! root [14] mdst.Loop() Warning in <TBranchObject::GetEntry>: Cannot get class: MEvent *** Break *** segmentation violation I've been stuck on that for a while. Split 99 is really what fits my needs, and it would be nice to be able to merge the trees together easily. I obviously miss something crucial about how split mode works. Why are the classes used to generate the tree still necessary for reading ? Really sorry for this long email... cheers, Colin
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:09 MET