Hi,
I must have missed someting in the way ROOT class I/O can be
implemented. I really dont understand why this code doesnt work.
It does compile, link and run, but the values are not stored and/or read
properly.
I spent a lot of time around this problem, looking into the 'Event'
exemple and such, but I'm really stuck...
Any idea ?
>>> File little_test.cpp
#include <TROOT.h>
#include <TFile.h>
#include <TTree.h>
#include "my_event.H"
main ( int argc , char **argv ) {
TROOT manip_event("test","Test analysis");
my_event *the_event = new my_event;
if (argc<2) {
TFile *root_file = new TFile("toto.root","RECREATE","Test events");
TTree *test_tree = new TTree("test_tree","Test manip events");
test_tree->Branch("brut_tsol","my_event",the_event);
for (int i=0;i<10;i++) {
the_event->set(i);
test_tree->Fill();
}
root_file->Write();
root_file->Close();
delete root_file;
}
else {
TFile *hfile = new TFile("toto.root");
TTree *tree = (TTree*)hfile->Get("test_tree");
TBranch *branch = tree->GetBranch("brut_tsol");
branch->SetAddress(the_event);
Int_t nentries = (Int_t)tree->GetEntries();
for (int ev = 0; ev < nentries; ev++) {
tree->GetEvent(ev);
the_event->print();
}
}
}
>>> File my_event.cpp
#include <iostream.h>
#include <TROOT.h>
#include <TNtuple.h>
#include "my_event.H"
ClassImp(my_event);
my_event:: my_event(void) {;}
my_event::~my_event(void) {;}
void my_event::set(int a) { T1=a; T2=2*a; }
void my_event::print(void) { cout << T1 << " " << T2 << endl; }
>>> File my_event.H
#ifndef __my_event__
#define __my_event__
class my_event : public TObject {
public:
my_event (void);
~my_event(void);
public:
Float_t T1;
Float_t T2;
void set (int a);
void print(void);
ClassDef(my_event,1) // The macro
};
#endif
>>> File Makefile
CPC = CC -compat=4
LD = CC -compat=4
CPCflags = $(shell root-config --cflags)
ldflags = $(shell root-config --libs)
OBJTEST = little_test.o my_event.o
OBJDICT = my_event.dict_o
MYTEST = mytest
all: $(MYTEST)
$(MYTEST): $(OBJTEST) $(OBJDICT)
@$(LD) $(OBJTEST) $(OBJDICT) $(ldflags) -o $(MYTEST)
.SUFFIXES :
.SUFFIXES : .cpp .H .C .dict_o .o
.cpp.o:
@echo compilation of $<
$(CPC) $(CPCflags) $< -c -o $@
.H.C:
@echo "Generating dictionary ..."
@rootcint $@ -c $<
.C.dict_o:
@echo compilation of dico $<
$(CPC) $(CPCflags) $< -c -o $@
-------------
All that was tryed with :
$ uname -a
SunOS gansrx 5.6 Generic_105181-08 sun4u sparc SUNW,Ultra-1
root says:
* Version 2.23/08 2 November 1999 *
(btw, why not adding a --version option to the root program ?)
I modified the RConfig.h file as Bruce O'NEEL suggested to be able to
compile with the SUN CC5.0 compiler in compat mode.
_/ Yannick Patois _________________ Address (home) __________________
| irc(undernet): Garp on #france25+ | La Villa des Sciences |
| email : patois@ganil.fr | 12, avenue de Cambridge |
| web :http://www.sura.org/~patois/ | 14200 Herouville-Saint-Clair |
| Tel/Fax-home:+33 (0)2 31 94 50 32 | FRANCE |
|___________________________________|__________________________________|
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:42 MET