Hi Aoki,
Replace the two lines
tree->Branch("north","TEvent",&north,3200,99);
tree->Branch("south","TEvent",&south,3200,99);
by
tree->Branch("north.","TEvent",&north,3200,99);
tree->Branch("south.","TEvent",&south,3200,99);
see Users Guide page 205
Rene Brun
AOKI Kazuya wrote:
>
> Dear ROOT experts,
>
> I have trouble with TTree,
> Can experts look at this , please?
>
> I created two branches
>
> tree->Branch("north","TEvent",&north);
> tree->Branch("south","TEvent",&south);
>
> ( same class but different branch names )
> ( TEvent class has a single valuable named "val" )
>
> When I tried to Scan them , I did like this,
>
> tree->Scan("north.val")
> tree->Scan("south.val")
>
> but the "north." "south." didn't work.
> these commands always return "north.val" value.
>
> with tree->SetBranchAddress and tree->GetEntry,
> I can get correct values.
> only Draw and Scan functions failed to distinguish
> these valuables which has exactly the same name but
> different branch names.
>
> Best Regards,
> Kazuya
>
> ------------------------------
> I'm using ROOT Version 3.05/07 8 August 2003
>
> The following are the source files.
> TEvent.h
> TEvent.C
> TEventLinkDef.h
> Makefile
> test.C
> rootlogon.C
>
> ------------------------------- SCREEN SHOT
> root [0] .x test.C
> root [1] tree->Scan("north.val")
> ************************
> * Row * north.val *
> ************************
> * 0 * 1 *
> * 1 * 1 *
> * 2 * 1 *
> ************************
> (Int_t)3
> root [2] tree->Scan("south.val")
> ************************
> * Row * south.val *
> ************************
> * 0 * 1 *
> * 1 * 1 *
> * 2 * 1 *
> ************************
> (Int_t)3
> ----------------------------------- END OF SCREEN SHOT
>
> -----TEvent.h-----
>
> #ifndef __TEVENT_H
> #define __TEVENT_H
>
> #ifndef __CINT__
> #include "TObject.h"
> #endif
>
> class TObject;
>
> class TEvent : public TObject
> {
> int val;
> public:
> TEvent(){}
> ~TEvent(){}
> void SetVal(int _val) { val = _val; }
> int GetVal(){return val;}
>
> ClassDef( TEvent , 1 )
> };
>
> #endif
>
> ---- TEvent.C ----
>
> #include "TEvent.h"
>
> ClassImp( TEvent )
>
> ----- test.C ----
> TTree *tree;
> TEvent *south;
> TEvent *north;
>
> void test()
> {
> TEvent t;
> north = new TEvent();
> south = new TEvent();
> tree = new TTree("testtree","testtree");
> tree->Branch("north","TEvent",&north,3200,99);
> tree->Branch("south","TEvent",&south,3200,99);
> north->SetVal(1);
> south->SetVal(0);
> tree->Fill();
> tree->Fill();
> tree->Fill();
> }
>
> ------ rootlogon.C ----
> {
> gSystem->Load("libTEvent.so");
> }
>
> ---- TEventLinkDef.h ---
> #ifdef __CINT__
> #pragma link off all globals;
> #pragma link off all classes;
> #pragma link off all functions;
> #pragma link C++ class TEvent;
> #endif
>
> --- Makefile ---
>
> ROOTCFLAGS := $(shell root-config --cflags)
> ROOTLIBS := $(shell root-config --libs)
> ROOTGLIBS := $(shell root-config --glibs)
>
> CXXFLAGS = $(ROOTCFLAGS)
> LD = g++
> PACKAGE = TEvent
>
> ROOTLIBS = $(shell root-config --libs)
>
> LDFLAGS = -O
> SOFLAGS = -shared
>
> HDRFILES = TEvent.h
>
> ADDITIONAL_SOURCES = TEventDict.C
>
> SO = lib$(PACKAGE).so
>
> $(SO) : $(PACKAGE).C $(ADDITIONAL_SOURCES) $(HDRFILES)
> $(CXX) $(CXXFLAGS) -g -o $@ -shared $< $(ADDITIONAL_SOURCES) $(LDFLAGS)
>
> .PHONY: clean
>
> TEventDict.C: TEvent.h TEventLinkDef.h
> @echo "Generating ROOT Dictionnary ..."
> rootcint -f $@ -c $(CINTINCS) $^
>
> clean:
> rm -f $(SO) *Dict*
>
> ---------------------------
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:17 MET