RE: [ROOT] Visual C++ and getting TTree from TFile

From: Valeri Fine (fine@bnl.gov)
Date: Thu May 06 2004 - 22:23:23 MEST


Add 
#include "TSystem.h"
and 

   gSystem->Load("libTree");

as your first statement

> #include <string.h>
> #include <stdlib.h>
> #include <Riostream.h>
> #include <stddef.h>
> #include "TROOT.h"
> #include "TApplication.h"
> #include "TH1.h"
> #include "TTree.h"
> #include "TFile.h"
  #include "TSystem.h"
> 
> #define INPUTFILE "c:/lxplus/scratch0/Neutralino_000004_1_100000.root"
> int main(int argc, char* argv[])
> {
      gSystem->Load("libTree");
> 	TH1F h1("h1","h1",10,0,10);
> 	TFile f(INPUTFILE);
> 	f.ls();
> 	f.cd("CBNT");
> 	gDirectory->ls();
> 	TTree* t1=(TTree*) gDirectory->Get("t3333");
> 	return 0;
> }

----
Best regards
                   Valeri


> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch] On
> Behalf Of Damien PRIEUR
> Sent: Thursday, May 06, 2004 1:55 PM
> To: roottalk@cern.ch
> Subject: [ROOT] Visual C++ and getting TTree from TFile
> 
> Hello,
> 
> I am using Root 4.00/03 compiled with win32gdk on a Win XP system.
> I am executing a self compiled program (using visual c++ 6)that
basicaly
> open an already existing file and get a TTree from it:
> 
> //
> #include <string.h>
> #include <stdlib.h>
> #include <Riostream.h>
> #include <stddef.h>
> #include "TROOT.h"
> #include "TApplication.h"
> #include "TH1.h"
> #include "TTree.h"
> #include "TFile.h"
> 
> #define INPUTFILE "c:/lxplus/scratch0/Neutralino_000004_1_100000.root"
> int main(int argc, char* argv[])
> {
> 	TH1F h1("h1","h1",10,0,10);
> 	TFile f(INPUTFILE);
> 	f.ls();
> 	f.cd("CBNT");
> 	gDirectory->ls();
> 	TTree* t1=(TTree*) gDirectory->Get("t3333");
> 	return 0;
> }
> 
> The code compile fine without errors messages, but when I execute it I
get
> the following errors and I cannot access the tree stored in the file:
> 
> >Warning in <TClass::TClass>: no dictionary for class TTree is
available
> >Warning in <TClass::TClass>: no dictionary for class TBranch is
available
> >Warning in <TClass::TClass>: no dictionary for class TLeafI is
available
> >Warning in <TClass::TClass>: no dictionary for class TLeaf is
available
> >Warning in <TClass::TClass>: no dictionary for class TLeafF is
available
> >TFile**         c:/lxplus/scratch0/Neutralino_000004_1_100000.root
Athena
> Trees
> > TFile*         c:/lxplus/scratch0/Neutralino_000004_1_100000.root
Athena
> Trees
> >  KEY: TDirectory       Atlfast;1       Atlfast
> >  KEY: TDirectory       CBNT;1  CBNT
> >TDirectory*             CBNT    CBNT
> > KEY: TTree     t3333;1 Combined Ntuple
> >Error in <TBuffer::CheckByteCount>: object of class TNamed read too
few
> >bytes: 26 instead of 1077290
> 
> 
> At the link stage, I have specified the following libraries:
> libCore.lib libCint.lib libHist.lib libGraf.lib libGraf3d.lib
libGpad.lib
> libTree.lib libRint.lib libPostscript.lib libMatrix.lib libPhysics.lib
> 
> I've found in the roottalk database mails from peoples that were
having
> such error messages (on MacOSX) but I was not able to find a solution
from
> these.
> I am just starting using visual c++ and I am not an expert. Have I
> missed something evident ?
> 
> Thanks in advance,
> Damien.



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET