Hi Kareem, Your initialisation of ROOT is wrong. Replace it by TROOT root2h("root2h","wrong direction"); You can see examples to loop on a list of keys in $ROOTSYS/tutorials/hadd.C and $ROOTSYS/tutorials/work.C Rene Brun Kareem Kazkaz wrote: > > Hello rooters. > > I am running a C++ program to take a simple root ntuple and convert it > to hbook format, but I am running into difficulties reading in the > ntuple. (Root version 3.00/06, compiled locally.) > > Here's the relevant C++ code: > > gROOT = ::new TROOT("gROOT","root2h"); > > TFile fin(argv[1],"READ"); > if (!(fin.IsOpen()) ) { > printf("Error in root2h: could not open file %s\n",argv[1]); > exit(-1); > } > > TKey *firstKey = (TKey *)fin.GetListOfKeys()->At(0); > if ( !firstKey ) printf("Error in root2h: could not find ntuple in > file %s\n"$ > TNtuple *theNtuple = (TNtuple *)fin.Get(firstKey->GetName()); > > if ( !theNtuple ) { > printf("Error in root2h: could not find Ntuple in file > %s\n",argv[1]); > exit (-1); > } > > When I run the program, I get the following error message: > > marie:~/source/smear % root2h sumall_0201_smeared.root > sumall_0201_smeared.hbk > Error in <TKey::ReadObj>: Unknown class TNtuple > Error in root2h: could not find Ntuple in file > sumall_0201_smeared.root > > Now here is a root transcript where I enter the commands via root > directly, and the ntuple is correctly read in: > > root [0] TFile fin("sumall_0201_smeared.root","READ") > root [1] fin.IsOpen() > (const unsigned char)1 > root [2] TKey *firstKey = (TKey *)fin.GetListOfKeys()->At(0) > root [3] firstKey->GetName() > (const char* 0x14097c38c)"ntuple" > root [4] TNtuple *theNtuple = (TNtuple > *)fin.Get(firstKey->GetName()) > root [5] theNtuple > (class TNtuple*)0x140a05000 > > Any suggestions would be greatly appreciated. > > Kareem
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:40 MET