Problem with stan-alone program and root

Hello,
I have a problem which I don’t know how to solve and I hope someone can help me out… That’s the situation: RedHat 7.3, gcc 3.2.3, Root 4.02/00. I have a root tree saved in many files that I would like to analyze with a stand-alone program. I open in the stand-alone program all the files building a TChain. Then I read the chain and do something with all the data. Example is in the attached file that contains tha code, 2 simple root file and the log I get. The first problem is the warnings:
Warning in TClass::TClass: no dictionary for class TRootEvent is available
Warning in TClass::TClass: no dictionary for class TRootBTagJet is available
Warning in TClass::TClass: no dictionary for class TSortableObject is available

The program however ends correctly without problem and without other errors.

This is a simplyfied version of the root tree however, the original one is much bigger (and with more entries) and at the end of the program (just before exiting) I got an error:

*** Break *** segmentation violation
0x4151aef8 in from /lib/libc.so.6
0x00000000 in
Abort (core dumped)

To be honest I’m able to do everything I’d like (book histos, fill and save to a file before tha crash) but I really would like to know if I’m doing something wrong or not.

Second question (more philosophical): I have to analyze something like one million of events with the program I wrote. For the moment I test my program over 10K events and it takes somthing like 10 minutes. Going to 1M event it means something like 1000 minutes (16-17 hours). This is why I wrote a stand alone program (which should run faster than interactive root). Now I’m able to use many CPU (15-20) and a batch system (PBS if you know it) … what would be the more effective way to use all the CPU which I have? I’m going to run different copy of my program, each doing my analysis from event #1->10000, 10001->20000 etc… at the end I will use a macro to put together all the histos I’m using to see the final results.

Is that the best way? Is there any other option? Is there someone around who already implemented something like this (with code examples?)

Thank you for helping

Attilio
test_vari.zip (23.1 KB)

[code]I have a problem which I don’t know how to solve and I hope someone can help me out… That’s the situation: RedHat 7.3, gcc 3.2.3, Root 4.02/00. I have a root tree saved in many files that I would like to analyze with a stand-alone program. I open in the stand-alone program all the files building a TChain. Then I read the chain and do something with all the data. Example is in the attached file that contains tha code, 2 simple root file and the log I get. The first problem is the warnings:
Warning in TClass::TClass: no dictionary for class TRootEvent is available
Warning in TClass::TClass: no dictionary for class TRootBTagJet is available
Warning in TClass::TClass: no dictionary for class TSortableObject is available

The program however ends correctly without problem and without other errors.

This is a simplyfied version of the root tree however, the original one is much bigger (and with more entries) and at the end of the program (just before exiting) I got an error:

*** Break *** segmentation violation
0x4151aef8 in from /lib/libc.so.6
0x00000000 in
Abort (core dumped)

To be honest I’m able to do everything I’d like (book histos, fill and save to a file before tha crash) but I really would like to know if I’m doing something wrong or not. [/code]

When you have a problem of this type, report the error following the guidelines at:
root.cern.ch/root/roottalk/RoottalkRules.html
Anyhow, you should remove the last sattement of your program:
delete fChain->GetCurrentFile();

[quote]Second question (more philosophical): I have to analyze something like one million of events with the program I wrote. For the moment I test my program over 10K events and it takes somthing like 10 minutes. Going to 1M event it means something like 1000 minutes (16-17 hours). This is why I wrote a stand alone program (which should run faster than interactive root). Now I’m able to use many CPU (15-20) and a batch system (PBS if you know it) … what would be the more effective way to use all the CPU which I have? I’m going to run different copy of my program, each doing my analysis from event #1->10000, 10001->20000 etc… at the end I will use a macro to put together all the histos I’m using to see the final results.

Is that the best way? Is there any other option? Is there someone around who already implemented something like this (with code examples?) [/quote]

I have very strong doubts that your standalone program will run faster than interactive root. If it does, let us know ::slight_smile:
We are working on a system called PROOF that is designed to do
exactly this. For more info on PROOF see
root.cern.ch/root/PROOF.html
if you need more info on PROOF, contact directly Fons.Rademakers@cern.ch

Rene