[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: problem with root 5.18



Hi Antonio,

First off, it seems that your question should really be sent to the ROOT
mailing list or forum, as it is not really Debian specific.   The good
people over at roottalk@root.cern.ch and at the ROOT forum are usually
every good at answering questions.  I've Cc'ed this to
roottalk@root.cern.ch.

On Fri, 2008-02-29 at 19:08 +0100, Antonio Salvucci wrote:
> Hi list,
> 	I have some problems with ROOT 5.18. I compiled this version using debian 
> rules from Christian Holm Christensen debian repository (I'm using an amd64 
> Debian OS).
> In this version i have the same problem with 5.17 one.
> In fact, I have to load some .root files, and i use this way
> 
>  		TChain *tree = new TChain("CollectionTree","")
>                 tree->Add("path's files ")
>                 tree->MakeClass("name")
> 
> then I compile with .L name.C.

I guess you did something to "name.C" first.   The recommendation is
actually to derive a class from "name" and overload the member functions
you need to do something in. 

> When I run my program, with .Loop() command, my root does anything or returns 
> errors.
> 
> I insert some debug lines in my code as i show
> 
> if (fChain == 0) return;
> 
>    Long64_t nentries = fChain->GetEntriesFast();
> 
>    Long64_t nbytes = 0, nb = 0;
> 
>   cout << "DEBUG::start::" << endl;
> 
>    for (Long64_t jentry=0; jentry<nentries;jentry++) {
> 
>         cout << "DEBUG::Load1::" << jentry << endl;
> 
>       Long64_t ientry = LoadTree(jentry);
> 
>         cout << "DEBUG::Load2::" << jentry << endl;
> 
>       if (ientry < 0) break;
> 
>         cout << "DEBUG::Load3::" << jentry << endl;
> 
>       nb = fChain->GetEntry(jentry);
> 
>         cout << "DEBUG::Load4::" << jentry << endl;
> 
>       nbytes += nb;
> 
>         cout << "DEBUG::Load5::" << jentry << endl;
>         }
> 
> When I run the program there are 2 cases:
> 
> 1) root returns only these lines
> 	DEBUB::Start::0
> 	DEBUG::Load1::1
> 	Warning in <TClass::TClass>: no dictionary for class AttributeListLayout is  
> available
> 	Warning in <TClass::TClass>: no dictionary for class pair<string,string> is 
> available

These warnings come because you have not loaded the library that
contains the definitions of "AttributeListLayout" and
"std::pair<string,string>".  Compile and generate dictionaries for these
classes and load them into ROOT using TSystem::Load before executing any
code that access the ROOT file.  Check the ROOT manual for how to do
that. 

> 2) root returns these lines and stop with an error
> 	DEBUG::Start::
> 	DEBUG::Load1::0
> 	Warning in <TClass::TClass>: no dictionary for class AttributeListLayout is 
> available
> 	Warning in <TClass::TClass>: no dictionary for class pair<string,string> is 
> available
> 	DEBUG::Load2::0
> 	DEBUG::Load3::0
> 
>  *** Break *** segmentation violation
...

Most likely this would be cured by having the proper definitions of the
missing classes. 

If you do not need to read the data from these classes, then you can
disable those branches (TTree::SetBranchStatus I think). 

> Can you help me?? do you have this problem too???

No, I do not see that problem.   But try with rootttalk@root.cern.ch or
the forum. 

Note, that you'd most likely be asked to provide a bit more information,
like posting your data file (if not too big), your script, and so on. 

Yours,

-- 
 ___  |  Christian Holm Christensen 
  |_| |  -------------------------------------------------------------
    | |  Address: Sankt Hansgade 23, 1. th.  Phone:  (+45) 35 35 96 91
     _|           DK-2200 Copenhagen N       Cell:   (+45) 24 61 85 91
    _|            Denmark                    Office: (+45) 353  25 447
 ____|   Email:   cholm@nbi.dk               Web:    www.nbi.dk/~cholm
 | |


Reply to: