diff --git a/tree/inc/TChain.h b/tree/inc/TChain.h
index 92034f4ab8951e23e6d2c09f45d9e1a00afb5618..b3fed88a0a1f94ccbef3383cb198db4f8486653f 100644
--- a/tree/inc/TChain.h
+++ b/tree/inc/TChain.h
@@ -1,4 +1,4 @@
-// @(#)root/tree:$Name:  $:$Id: TChain.h,v 1.51 2006/05/23 04:47:42 brun Exp $
+// @(#)root/tree:$Name:  $:$Id: TChain.h,v 1.52 2006/06/08 16:59:02 pcanal Exp $
 // Author: Rene Brun   03/02/97
 
 /*************************************************************************
@@ -126,8 +126,9 @@ public:
    virtual Long64_t  Scan(const char *varexp="", const char *selection="", Option_t *option=""
                           ,Long64_t nentries=1000000000, Long64_t firstentry=0); // *MENU*
    virtual void      SetAutoDelete(Bool_t autodel=kTRUE);
-   virtual void      SetBranchAddress(const char *bname,void *add);
-   virtual void      SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t ptr);
+   virtual void      SetBranchAddress(const char *bname,void *add, TBranch **ptr = 0);
+   virtual void      SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
+   virtual void      SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
    virtual void      SetBranchStatus(const char *bname,Bool_t status=1, UInt_t *found=0);
    virtual void      SetDirectory(TDirectory *dir);
    virtual void      SetMakeClass(Int_t make) { TTree::SetMakeClass(make); if (fTree) fTree->SetMakeClass(make);}
diff --git a/tree/inc/TChainElement.h b/tree/inc/TChainElement.h
index bd03fa0f97111576b8bd57b3995523966c118207..b0143199b6a36cdef918a0469b5190bd0ae757da 100644
--- a/tree/inc/TChainElement.h
+++ b/tree/inc/TChainElement.h
@@ -1,4 +1,4 @@
-// @(#)root/tree:$Name:  $:$Id: TChainElement.h,v 1.7 2005/03/10 17:57:04 rdm Exp $
+// @(#)root/tree:$Name:  $:$Id: TChainElement.h,v 1.8 2005/11/11 22:16:04 pcanal Exp $
 // Author: Rene Brun   11/02/97
 
 /*************************************************************************
@@ -25,6 +25,8 @@
 #include "TNamed.h"
 #endif
 
+class TBranch;
+
 class TChainElement : public TNamed {
 
 protected:
@@ -37,6 +39,7 @@ protected:
    UInt_t        fBaddressType;     //!Type of the value pointed to by fBaddress
    Bool_t        fBaddressIsPtr;    //!True if the address is a pointer to an address
    char         *fPackets;          //!Packet descriptor string
+   TBranch     **fBranchPtr;        //!Address of user branch pointer (to updated upon loading a file)
 
 public:
    TChainElement();
@@ -47,6 +50,7 @@ public:
    virtual const char*GetBaddressClassName() const { return fBaddressClassName; }
    virtual Bool_t   GetBaddressIsPtr() const { return fBaddressIsPtr; }
    virtual UInt_t   GetBaddressType() const { return fBaddressType; }
+   virtual TBranch**GetBranchPtr() const { return fBranchPtr; }
    virtual Int_t    GetEntries() const {return fEntries;}
    virtual char    *GetPackets() const {return fPackets;}
    virtual Int_t    GetPacketSize() const {return fPacketSize;}
@@ -56,6 +60,7 @@ public:
    virtual void     SetBaddressClassName(const char* clname) { fBaddressClassName = clname; }
    virtual void     SetBaddressIsPtr(Bool_t isptr) { fBaddressIsPtr = isptr; }
    virtual void     SetBaddressType(UInt_t type) { fBaddressType = type; }
+   virtual void     SetBranchPtr(TBranch **ptr) { fBranchPtr = ptr; }
    virtual void     SetNumberEntries(Int_t n) {fEntries=n;}
    virtual void     SetPacketSize(Int_t size = 100);
    virtual void     SetStatus(Int_t status) {fStatus = status;}
diff --git a/tree/inc/TTree.h b/tree/inc/TTree.h
index bd9c4e01d17aff6e0bcbcb9b005429a3dce60562..1ea00765b6d914a85f5821762040e42139ba9b8f 100644
--- a/tree/inc/TTree.h
+++ b/tree/inc/TTree.h
@@ -1,4 +1,4 @@
-// @(#)root/tree:$Name:  $:$Id: TTree.h,v 1.87 2006/05/23 04:47:42 brun Exp $
+// @(#)root/tree:$Name:  $:$Id: TTree.h,v 1.88 2006/06/05 20:30:27 brun Exp $
 // Author: Rene Brun   12/01/96
 
 /*************************************************************************
@@ -350,17 +350,18 @@ public:
    virtual void         SetAutoSave(Long64_t autos=10000000) {fAutoSave=autos;}
    virtual void         SetBasketSize(const char *bname,Int_t buffsize=16000);
 #if !defined(__CINT__)
-   virtual void         SetBranchAddress(const char *bname,void *add);
+   virtual void         SetBranchAddress(const char *bname,void *add, TBranch **ptr = 0);
 #endif
-   virtual void         SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t ptr);
-   template <class T> void SetBranchAddress(const char *bname, T **add) {
-      SetBranchAddress(bname,add,gROOT->GetClass(typeid(T)),TDataType::GetType(typeid(T)),true);
+   virtual void         SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
+   virtual void         SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
+   template <class T> void SetBranchAddress(const char *bname, T **add, TBranch **ptr = 0) {
+      SetBranchAddress(bname,add,ptr,gROOT->GetClass(typeid(T)),TDataType::GetType(typeid(T)),true);
    }
 #ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
    // This can only be used when the template overload resolution can distringuish between
    // T* and T**
-   template <class T> void SetBranchAddress(const char *bname, T *add) {
-      SetBranchAddress(bname,add,gROOT->GetClass(typeid(T)),TDataType::GetType(typeid(T)),false);
+   template <class T> void SetBranchAddress(const char *bname, T *add, TBranch **ptr = 0) {
+      SetBranchAddress(bname,add,ptr,gROOT->GetClass(typeid(T)),TDataType::GetType(typeid(T)),false);
    }
 #endif
    virtual void         SetBranchStatus(const char *bname,Bool_t status=1,UInt_t *found=0);
diff --git a/tree/src/ManualTree2.cxx b/tree/src/ManualTree2.cxx
index 9b0cbdd6c68efdb89461cbce9c0b52875fd71989..ea1b8f94a0ebaadb1da2d1000fcf6129825bf6a9 100644
--- a/tree/src/ManualTree2.cxx
+++ b/tree/src/ManualTree2.cxx
@@ -1,5 +1,6 @@
 //
-// File generated by utils\src\rootcint_tmp.exe at Wed Jan 12 09:24:27 2005.
+// File generated by c:\Devel\root_working\code\root.vc8\utils\src\rootcint_tmp.exe at Sat Jun 24 10:35:23 2006
+
 // Do NOT change. Changes will be lost next time file is generated
 //
 
@@ -12,8 +13,8 @@
 
 // Since CINT ignores the std namespace, we need to do so in this file.
 namespace std {} using namespace std;
-
 #include "ManualTree2.h"
+
 #include "TClass.h"
 #include "TBuffer.h"
 #include "TStreamerInfo.h"
@@ -25,13 +26,15 @@ namespace std {} using namespace std;
 #endif
 
 #include "RtypesImp.h"
-
 #include "TCollectionProxy.h"
+#include "TIsAProxy.h"
+// START OF SHADOWS
 
 namespace ROOT {
    namespace Shadow {
-   } // Of namespace ROOT::Shadow
-} // Of namespace ROOT
+   } // of namespace Shadow
+} // of namespace ROOT
+// END OF SHADOWS
 
 /********************************************************
 * tree/src/ManualTree2.cxx
@@ -48,45 +51,12 @@ namespace ROOT {
 extern "C" void G__cpp_reset_tagtableManualTree2();
 
 extern "C" void G__set_cpp_environmentManualTree2() {
-   G__add_compiledheader("base/inc/TROOT.h");
-   G__add_compiledheader("base/inc/TMemberInspector.h");
-   G__add_compiledheader("TTree.h");
-   G__cpp_reset_tagtableManualTree2();
+  G__add_compiledheader("base/inc/TROOT.h");
+  G__add_compiledheader("base/inc/TMemberInspector.h");
+  G__add_compiledheader("TTree.h");
+  G__cpp_reset_tagtableManualTree2();
 }
-class G__treedIsrcdIManualTree2dOcxx_tag {};
-
-void* operator new(size_t size,G__treedIsrcdIManualTree2dOcxx_tag* p) {
-   if(p && G__PVOID!=G__getgvp()) return((void*)p);
-#ifndef G__ROOT
-   return(malloc(size));
-#else
-   return(::operator new(size));
-#endif
-}
-
-/* dummy, for exception */
-#ifdef G__EH_DUMMY_DELETE
-void operator delete(void *p,G__treedIsrcdIManualTree2dOcxx_tag* x) {
-   if((long)p==G__getgvp() && G__PVOID!=G__getgvp()) return;
-#ifndef G__ROOT
-   free(p);
-#else
-   ::operator delete(p);
-#endif
-}
-#endif
-
-static void G__operator_delete(void *p) {
-   if((long)p==G__getgvp() && G__PVOID!=G__getgvp()) return;
-#ifndef G__ROOT
-   free(p);
-#else
-   ::operator delete(p);
-#endif
-}
-
-void G__DELDMY_treedIsrcdIManualTree2dOcxx() { G__operator_delete(0); }
-
+#include <new>
 extern "C" int G__cpp_dllrevManualTree2() { return(30051515); }
 
 /*********************************************************
@@ -110,18 +80,18 @@ extern "C" int G__cpp_dllrevManualTree2() { return(30051515); }
 * Get size of pointer to member function
 *********************************************************/
 class G__Sizep2memfuncManualTree2 {
-public:
-   G__Sizep2memfuncManualTree2() {p=&G__Sizep2memfuncManualTree2::sizep2memfunc;}
-   size_t sizep2memfunc() { return(sizeof(p)); }
-private:
-   size_t (G__Sizep2memfuncManualTree2::*p)();
+ public:
+  G__Sizep2memfuncManualTree2() {p=&G__Sizep2memfuncManualTree2::sizep2memfunc;}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncManualTree2::*p)();
 };
 
 size_t G__get_sizep2memfuncManualTree2()
 {
-   G__Sizep2memfuncManualTree2 a;
-   G__setsizep2memfunc((int)a.sizep2memfunc());
-   return((size_t)a.sizep2memfunc());
+  G__Sizep2memfuncManualTree2 a;
+  G__setsizep2memfunc((int)a.sizep2memfunc());
+  return((size_t)a.sizep2memfunc());
 }
 
 
@@ -145,31 +115,36 @@ extern "C" void G__cpp_setup_inheritanceManualTree2() {
 extern "C" void G__cpp_setup_typetableManualTree2() {
 
    /* Setting up typedef entry */
-   G__search_typename2("Int_t",105,-1,0,
--1);
+   G__search_typename2("Int_t",105,-1,0,-1);
    G__setnewtype(-1,"Signed integer 4 bytes (int)",0);
    G__search_typename2("vector<TStreamerInfo*>",117,G__get_linked_tagnum(&G__ManualTree2LN_vectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
+   G__setnewtype(-1,NULL,0);
    G__search_typename2("_Ranit<TStreamerInfo*,difference_type,const_pointer,const_reference>",117,G__get_linked_tagnum(&G__ManualTree2LN__RanitlETStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,G__get_linked_tagnum(&G__ManualTree2LN_vectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgR));
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
+   G__setnewtype(-1,NULL,0);
    G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__ManualTree2LN_vectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgR));
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
+   G__setnewtype(-1,NULL,0);
    G__search_typename2("iterator<iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator>::iterator_category,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator>::value_type,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator>::difference_type,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator>::pointer,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator>::reference>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
+   G__setnewtype(-1,NULL,0);
    G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
-   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*>vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator::difference_type>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
-   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*>vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator::difference_type>TStreamerInfo**>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*,vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator::difference_type>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*,vector<TStreamerInfo*,allocator<TStreamerInfo*> >::iterator::difference_type,TStreamerInfo**>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
+   G__setnewtype(-1,NULL,0);
    G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLconst_iteratorgR),0,G__get_linked_tagnum(&G__ManualTree2LN_vectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgR));
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
+   G__setnewtype(-1,NULL,0);
    G__search_typename2("iterator<iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::const_iterator>::iterator_category,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::const_iterator>::value_type,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::const_iterator>::difference_type,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::const_iterator>::pointer,iterator_traits<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::const_iterator>::reference>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
-   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*>long>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
-   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*>long>TStreamerInfo**>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
-   G__setnewtype(-1,"// @(#)root/base:$Name:  $:$Id: ManualTree2.cxx,v 1.3 2005/11/14 15:17:34 pcanal Exp $",0);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*,long>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("iterator<random_access_iterator_tag,TStreamerInfo*,long,TStreamerInfo**>",117,G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("map<void*,Version_t>",117,G__get_linked_tagnum(&G__ManualTree2LN_maplEvoidmUcOshortcOlesslEvoidmUgRcOallocatorlEpairlEvoidmUsPconstcOshortgRsPgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("map<void*,short>",117,G__get_linked_tagnum(&G__ManualTree2LN_maplEvoidmUcOshortcOlesslEvoidmUgRcOallocatorlEpairlEvoidmUsPconstcOshortgRsPgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("map<void*,short,less<void*>>",117,G__get_linked_tagnum(&G__ManualTree2LN_maplEvoidmUcOshortcOlesslEvoidmUgRcOallocatorlEpairlEvoidmUsPconstcOshortgRsPgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
 }
 
 /*********************************************************
@@ -194,15 +169,16 @@ extern "C" void G__cpp_setup_memvarManualTree2() {
 static void G__setup_memfuncTTree(void) {
    /* TTree */
    G__tag_memfunc_setup(G__get_linked_tagnum(&G__ManualTree2LN_TTree));
-   G__memfunc_setup("Branch",590,G__ManualTree2_165_6_17,85,G__get_linked_tagnum(&G__ManualTree2LN_TBranch),-1,0,5,1,1,0,
+   G__memfunc_setup("Branch",590,G__ManualTree2_169_2_18, 85, G__get_linked_tagnum(&G__ManualTree2LN_TBranch), -1, 0, 5, 1, 1, 0, 
 "C - - 10 - name C - - 10 - classname "
 "Y - - 3 - addobj i - 'Int_t' 0 32000 bufsize "
-"i - 'Int_t' 0 99 splitlevel",(char*)NULL,(void*)NULL,0);
-   G__memfunc_setup("Branch",590,G__ManualTree2_165_7_17,85,G__get_linked_tagnum(&G__ManualTree2LN_TBranch),-1,0,4,1,1,0,
+"i - 'Int_t' 0 99 splitlevel", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Branch",590,G__ManualTree2_169_3_18, 85, G__get_linked_tagnum(&G__ManualTree2LN_TBranch), -1, 0, 4, 1, 1, 0, 
 "C - - 10 - name Y - - 3 - addobj "
-"i - 'Int_t' 0 32000 bufsize i - 'Int_t' 0 99 splitlevel",(char*)NULL,(void*)NULL,0);
-   G__memfunc_setup("SetBranchAddress",1600,G__ManualTree2_165_9_17,121,-1,-1,0,2,1,1,0,
-"C - - 10 - bname Y - - 2 - add",(char*)NULL,(void*)NULL,0);
+"i - 'Int_t' 0 32000 bufsize i - 'Int_t' 0 99 splitlevel", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetBranchAddress",1600,G__ManualTree2_169_5_18, 121, -1, -1, 0, 3, 1, 1, 0, 
+"C - - 10 - bname Y - - 2 - add "
+"U 'TBranch' - 2 0 ptr", (char*)NULL, (void*) NULL, 0);
    G__tag_memfunc_reset();
 }
 
@@ -234,10 +210,10 @@ static void G__cpp_setup_global3() {
    G__resetglobalenv();
 }
 extern "C" void G__cpp_setup_globalManualTree2() {
-   G__cpp_setup_global0();
-   G__cpp_setup_global1();
-   G__cpp_setup_global2();
-   G__cpp_setup_global3();
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+  G__cpp_setup_global2();
+  G__cpp_setup_global3();
 }
 
 /*********************************************************
@@ -252,18 +228,14 @@ static void G__cpp_setup_func1() {
 }
 
 static void G__cpp_setup_func2() {
-}
-
-static void G__cpp_setup_func3() {
 
    G__resetifuncposition();
 }
 
 extern "C" void G__cpp_setup_funcManualTree2() {
-   G__cpp_setup_func0();
-   G__cpp_setup_func1();
-   G__cpp_setup_func2();
-   G__cpp_setup_func3();
+  G__cpp_setup_func0();
+  G__cpp_setup_func1();
+  G__cpp_setup_func2();
 }
 
 /*********************************************************
@@ -278,17 +250,19 @@ G__linked_taginfo G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStream
 G__linked_taginfo G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLconst_iteratorgR = { "reverse_iterator<vector<TStreamerInfo*,allocator<TStreamerInfo*> >::const_iterator>" , 99 , -1 };
 G__linked_taginfo G__ManualTree2LN_TTree = { "TTree" , 99 , -1 };
 G__linked_taginfo G__ManualTree2LN_TBranch = { "TBranch" , 99 , -1 };
+G__linked_taginfo G__ManualTree2LN_maplEvoidmUcOshortcOlesslEvoidmUgRcOallocatorlEpairlEvoidmUsPconstcOshortgRsPgRsPgR = { "map<void*,short,less<void*>,allocator<pair<void* const,short> > >" , 99 , -1 };
 
 /* Reset class/struct taginfo */
 extern "C" void G__cpp_reset_tagtableManualTree2() {
-   G__ManualTree2LN_vectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgR.tagnum = -1 ;
-   G__ManualTree2LN__RanitlETStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR.tagnum = -1 ;
-   G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR.tagnum = -1 ;
-   G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorgR.tagnum = -1 ;
-   G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR.tagnum = -1 ;
-   G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLconst_iteratorgR.tagnum = -1 ;
-   G__ManualTree2LN_TTree.tagnum = -1 ;
-   G__ManualTree2LN_TBranch.tagnum = -1 ;
+  G__ManualTree2LN_vectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgR.tagnum = -1 ;
+  G__ManualTree2LN__RanitlETStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR.tagnum = -1 ;
+  G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOlongcOTStreamerInfomUmUcOTStreamerInfomUaNgR.tagnum = -1 ;
+  G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR.tagnum = -1 ;
+  G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLconst_iteratorgR.tagnum = -1 ;
+  G__ManualTree2LN_TTree.tagnum = -1 ;
+  G__ManualTree2LN_TBranch.tagnum = -1 ;
+  G__ManualTree2LN_maplEvoidmUcOshortcOlesslEvoidmUgRcOallocatorlEpairlEvoidmUsPconstcOshortgRsPgRsPgR.tagnum = -1 ;
 }
 
 
@@ -301,30 +275,31 @@ extern "C" void G__cpp_setup_tagtableManualTree2() {
    G__get_linked_tagnum(&G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorgR);
    G__get_linked_tagnum(&G__ManualTree2LN_iteratorlErandom_access_iterator_tagcOTStreamerInfomUcOvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLiteratorcLcLdifference_typecOTStreamerInfomUmUcOTStreamerInfomUaNgR);
    G__get_linked_tagnum(&G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLconst_iteratorgR);
-   G__tagtable_setup(G__get_linked_tagnum(&G__ManualTree2LN_TTree),sizeof(TTree),-1,62720,"Tree descriptor (the main ROOT I/O class)",NULL,G__setup_memfuncTTree);
+   G__tagtable_setup(G__get_linked_tagnum(&G__ManualTree2LN_TTree),sizeof(TTree),-1,65280,"Tree descriptor (the main ROOT I/O class)",NULL,G__setup_memfuncTTree);
    G__get_linked_tagnum(&G__ManualTree2LN_TBranch);
+   G__get_linked_tagnum(&G__ManualTree2LN_maplEvoidmUcOshortcOlesslEvoidmUgRcOallocatorlEpairlEvoidmUsPconstcOshortgRsPgRsPgR);
 }
 extern "C" void G__cpp_setupManualTree2(void) {
-   G__check_setup_version(30051515,"G__cpp_setupManualTree2()");
-   G__set_cpp_environmentManualTree2();
-   G__cpp_setup_tagtableManualTree2();
+  G__check_setup_version(30051515,"G__cpp_setupManualTree2()");
+  G__set_cpp_environmentManualTree2();
+  G__cpp_setup_tagtableManualTree2();
 
-   G__cpp_setup_inheritanceManualTree2();
+  G__cpp_setup_inheritanceManualTree2();
 
-   G__cpp_setup_typetableManualTree2();
+  G__cpp_setup_typetableManualTree2();
 
-   G__cpp_setup_memvarManualTree2();
+  G__cpp_setup_memvarManualTree2();
 
-   G__cpp_setup_memfuncManualTree2();
-   G__cpp_setup_globalManualTree2();
-   G__cpp_setup_funcManualTree2();
+  G__cpp_setup_memfuncManualTree2();
+  G__cpp_setup_globalManualTree2();
+  G__cpp_setup_funcManualTree2();
 
    if(0==G__getsizep2memfunc()) G__get_sizep2memfuncManualTree2();
-   return;
+  return;
 }
 class G__cpp_setup_initManualTree2 {
-   public:
-   G__cpp_setup_initManualTree2() { G__add_setup_func("ManualTree2",(G__incsetup)(&G__cpp_setupManualTree2)); G__call_setup_funcs(); }
+  public:
+    G__cpp_setup_initManualTree2() { G__add_setup_func("ManualTree2",(G__incsetup)(&G__cpp_setupManualTree2)); G__call_setup_funcs(); }
    ~G__cpp_setup_initManualTree2() { G__remove_setup_func("ManualTree2"); }
 };
 G__cpp_setup_initManualTree2 G__cpp_setup_initializerManualTree2;
diff --git a/tree/src/ManualTree2.h b/tree/src/ManualTree2.h
index 5e3e006ec711bc30916c7d207606ed1e1af59d7c..9fe2f7aa5508487e97989f7752ef58d74a5198c1 100644
--- a/tree/src/ManualTree2.h
+++ b/tree/src/ManualTree2.h
@@ -16,16 +16,19 @@
 #define G__DICTIONARY
 #include "G__ci.h"
 extern "C" {
-extern void G__cpp_setup_tagtableManualTree2();
-extern void G__cpp_setup_inheritanceManualTree2();
-extern void G__cpp_setup_typetableManualTree2();
-extern void G__cpp_setup_memvarManualTree2();
-extern void G__cpp_setup_globalManualTree2();
-extern void G__cpp_setup_memfuncManualTree2();
-extern void G__cpp_setup_funcManualTree2();
-extern void G__set_cpp_environmentManualTree2();
+extern G__DLLEXPORT int G__cpp_dllrevManualTree2();
+extern G__DLLEXPORT void G__set_cpp_environmentManualTree2();
+extern G__DLLEXPORT void G__cpp_setup_tagtableManualTree2();
+extern G__DLLEXPORT void G__cpp_setup_inheritanceManualTree2();
+extern G__DLLEXPORT void G__cpp_setup_typetableManualTree2();
+extern G__DLLEXPORT void G__cpp_setup_memvarManualTree2();
+extern G__DLLEXPORT void G__cpp_setup_globalManualTree2();
+extern G__DLLEXPORT void G__cpp_setup_memfuncManualTree2();
+extern G__DLLEXPORT void G__cpp_setup_funcManualTree2();
+extern G__DLLEXPORT void G__cpp_setupManualTree2();
 }
 
+
 #include "TTree.h"
 #include <algorithm>
 namespace std { }
@@ -42,5 +45,6 @@ extern G__linked_taginfo G__ManualTree2LN_iteratorlErandom_access_iterator_tagcO
 extern G__linked_taginfo G__ManualTree2LN_reverse_iteratorlEvectorlETStreamerInfomUcOallocatorlETStreamerInfomUgRsPgRcLcLconst_iteratorgR;
 extern G__linked_taginfo G__ManualTree2LN_TTree;
 extern G__linked_taginfo G__ManualTree2LN_TBranch;
+extern G__linked_taginfo G__ManualTree2LN_maplEvoidmUcOshortcOlesslEvoidmUgRcOallocatorlEpairlEvoidmUsPconstcOshortgRsPgRsPgR;
 
 /* STUB derived class for protected member access */
diff --git a/tree/src/ManualTree2Body.h b/tree/src/ManualTree2Body.h
index 2fecc4f87726dd3590898c7d443efd63faf83a73..59fbeb27f9b47c3bf4d427a8a8b91a5758b28929 100644
--- a/tree/src/ManualTree2Body.h
+++ b/tree/src/ManualTree2Body.h
@@ -1,4 +1,4 @@
-static int G__ManualTree2_165_6_17(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash)
+static int G__ManualTree2_169_2_18(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash)
 {
   // We need to emulate
   // return BranchImp(name,classname,TBuffer::GetClass(typeid(T)),addobj,bufsize,splitlevel);
@@ -62,7 +62,7 @@ static int G__ManualTree2_165_6_17(G__value *result7,G__CONST char *funcname,str
    return(1 || funcname || hash || result7 || libp) ;
 }
 
-static int G__ManualTree2_165_7_17(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash)
+static int G__ManualTree2_169_3_18(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash)
 {
    // We need to emulate 
    // return BranchImp(name,TBuffer::GetClass(typeid(T)),addobj,bufsize,splitlevel);
@@ -114,7 +114,7 @@ static int G__ManualTree2_165_7_17(G__value *result7,G__CONST char *funcname,str
 
 #include "TDataType.h"
 
-static int G__ManualTree2_165_9_17(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash)
+static int G__ManualTree2_169_5_18(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash)
 {
    G__setnull(result7);
 
@@ -123,7 +123,16 @@ static int G__ManualTree2_165_9_17(G__value *result7,G__CONST char *funcname,str
    TClass *ptrClass = gROOT->GetClass(type.c_str());
    TDataType *data = gROOT->GetType(type.c_str());
    EDataType datatype = data ? (EDataType)data->GetType() : kOther_t;
+   TBranch **branchPtr = 0;
+
+   switch (libp->paran) {
+   case 3:
+      branchPtr = (TBranch**) G__int(libp->para[2]);
+      break;
+   case 2:
+      break;
+   }
+   ((TTree*)(G__getstructoffset()))->SetBranchAddress((const char*)G__int(libp->para[0]),(void*)G__int(libp->para[1]),branchPtr,ptrClass,datatype,ti.Reftype()==G__PARAP2P);
 
-   ((TTree*)(G__getstructoffset()))->SetBranchAddress((const char*)G__int(libp->para[0]),(void*)G__int(libp->para[1]),ptrClass,datatype,ti.Reftype()==G__PARAP2P);
    return(1 || funcname || hash || result7 || libp) ;
 }
diff --git a/tree/src/TChain.cxx b/tree/src/TChain.cxx
index aaec8d8da87efc5d06dd2a81c0e8175076acafe7..10c381dc01e90a853aadd4faa37baa3eb656d390 100644
--- a/tree/src/TChain.cxx
+++ b/tree/src/TChain.cxx
@@ -1,4 +1,4 @@
-// @(#)root/tree:$Name:  $:$Id: TChain.cxx,v 1.135 2006/06/19 09:34:41 brun Exp $
+// @(#)root/tree:$Name:  $:$Id: TChain.cxx,v 1.136 2006/06/20 06:46:04 brun Exp $
 // Author: Rene Brun   03/02/97
 
 /*************************************************************************
@@ -1076,6 +1076,8 @@ Long64_t TChain::LoadTree(Long64_t entry)
       void *add = element->GetBaddress();
       if (add) {
          TBranch *br = fTree->GetBranch(element->GetName());
+         TBranch **ptr = element->GetBranchPtr();
+         if (ptr) { *ptr = br; }
          if (br) {
             br->SetAddress(add);
             if (TestBit(kAutoDelete)) br->SetAutoDelete(kTRUE);
@@ -1471,7 +1473,7 @@ void TChain::ResetBranchAddresses()
 }
 
 //_______________________________________________________________________
-void TChain::SetBranchAddress(const char *bname, void *add)
+void TChain::SetBranchAddress(const char *bname, void *add, TBranch **ptr)
 {
    // Set branch address
    //
@@ -1491,10 +1493,12 @@ void TChain::SetBranchAddress(const char *bname, void *add)
    }
 
    element->SetBaddress(add);
-
+   element->SetBranchPtr(ptr);
+ 
    // Set also address in current Tree
    if (fTreeNumber >= 0) {
       TBranch *branch = fTree->GetBranch(bname);
+      if (ptr) { *ptr = branch; }
       if (branch) {
          CheckBranchAddressType(branch,
                                 gROOT->GetClass(element->GetBaddressClassName()),
@@ -1514,13 +1518,27 @@ void TChain::SetBranchAddress(const char *bname, void *add)
          } // if (fClones)
          branch->SetAddress(add);
       }
+   } else {
+      if (ptr) *ptr = 0;
    }
 }
 
 //_______________________________________________________________________
 void TChain::SetBranchAddress(const char *bname,void *add,
                               TClass *realClass, EDataType datatype,
-                              Bool_t ptr)
+                              Bool_t isptr)
+{
+   //Check if bname is already in the Status list
+   //Otherwise create a TChainElement object and set its address
+
+   return SetBranchAddress(bname,add,0,realClass,datatype,isptr);
+}
+
+//_______________________________________________________________________
+void TChain::SetBranchAddress(const char *bname,void *add,
+                              TBranch **ptr,
+                              TClass *realClass, EDataType datatype,
+                              Bool_t isptr)
 {
    //Check if bname is already in the Status list
    //Otherwise create a TChainElement object and set its address
@@ -1531,8 +1549,9 @@ void TChain::SetBranchAddress(const char *bname,void *add,
    }
    if (realClass) element->SetBaddressClassName(realClass->GetName());
    element->SetBaddressType((UInt_t)datatype);
-   element->SetBaddressIsPtr(ptr);
-   SetBranchAddress(bname,add);
+   element->SetBaddressIsPtr(isptr);
+   element->SetBranchPtr(ptr);
+   SetBranchAddress(bname,add,ptr);
 }
 
 //_______________________________________________________________________
diff --git a/tree/src/TChainElement.cxx b/tree/src/TChainElement.cxx
index 4d875d4551f90e70a5ea04b417fa2c63c4254c36..25d020e98fca1eaca4935bbf7bd46dde8689db41 100644
--- a/tree/src/TChainElement.cxx
+++ b/tree/src/TChainElement.cxx
@@ -1,4 +1,4 @@
-// @(#)root/tree:$Name:  $:$Id: TChainElement.cxx,v 1.4 2005/01/12 18:02:28 brun Exp $
+// @(#)root/tree:$Name:  $:$Id: TChainElement.cxx,v 1.5 2005/11/11 22:16:04 pcanal Exp $
 // Author: Rene Brun   11/02/97
 
 /*************************************************************************
@@ -22,7 +22,7 @@ ClassImp(TChainElement)
 
 //______________________________________________________________________________
    TChainElement::TChainElement(): TNamed(),fBaddress(0),fBaddressType(0),
-                                   fBaddressIsPtr(kFALSE)
+                                   fBaddressIsPtr(kFALSE), fBranchPtr(0)
 {
    // Default constructor for a chain element.
 
@@ -36,7 +36,7 @@ ClassImp(TChainElement)
 //______________________________________________________________________________
 TChainElement::TChainElement(const char *name, const char *title)
    :TNamed(name,title),fBaddress(0),fBaddressType(0),
-    fBaddressIsPtr(kFALSE)
+    fBaddressIsPtr(kFALSE), fBranchPtr(0)
 {
    // Create a chain element.
 
diff --git a/tree/src/TTree.cxx b/tree/src/TTree.cxx
index e8972e8dec76cd56b065535f4cd5f459ecf3de8b..30b2cb6d6ea3a0a323b43aed2657c5bfcf3a0102 100644
--- a/tree/src/TTree.cxx
+++ b/tree/src/TTree.cxx
@@ -1,4 +1,4 @@
-// @(#)root/tree:$Name:  $:$Id: TTree.cxx,v 1.287 2006/06/13 06:53:20 brun Exp $
+// @(#)root/tree:$Name:  $:$Id: TTree.cxx,v 1.288 2006/06/16 11:01:16 brun Exp $
 // Author: Rene Brun   12/01/96
 
 /*************************************************************************
@@ -1860,7 +1860,7 @@ TFile *TTree::ChangeFile(TFile *file)
 
 //______________________________________________________________________________
 Bool_t TTree::CheckBranchAddressType(TBranch *branch, TClass *ptrClass,
-                                     EDataType datatype, Bool_t ptr)
+                                     EDataType datatype, Bool_t isptr)
 {
    // Check whether the address described by the last 3 parameters match the
    // content of the branch.
@@ -1895,7 +1895,7 @@ Bool_t TTree::CheckBranchAddressType(TBranch *branch, TClass *ptrClass,
       }
       if (ptrClass && branch->GetMother()==branch) {
          // Top Level branch
-         if (!ptr) {
+         if (!isptr) {
             Error("SetBranchAddress",
                   "The address for \"%s\" should be the address of a pointer!",branch->GetName());
          }
@@ -4591,7 +4591,7 @@ void TTree::SetBasketSize(const char *bname, Int_t buffsize)
 }
 
 //_______________________________________________________________________
-void TTree::SetBranchAddress(const char *bname, void *add)
+void TTree::SetBranchAddress(const char *bname, void *add, TBranch **ptr)
 {
    //*-*-*-*-*-*-*-*-*Set branch address*-*-*-*-*-*-*-*
    //*-*              ==================
@@ -4600,6 +4600,7 @@ void TTree::SetBranchAddress(const char *bname, void *add)
    //      Function overloaded by TChain.
 
    TBranch *branch = GetBranch(bname);
+   if (ptr) *ptr = branch;
    if (branch) {
       if (fClones) {
          void *oldAdd = branch->GetAddress();
@@ -4621,14 +4622,25 @@ void TTree::SetBranchAddress(const char *bname, void *add)
 //_______________________________________________________________________
 void TTree::SetBranchAddress(const char *bname, void *add,
                              TClass *ptrClass, EDataType datatype,
-                             Bool_t ptr)
+                             Bool_t isptr)
+{
+   //  Verify the validity of the type of add before calling SetBranchAddress.
+   
+   SetBranchAddress(bname,add,0,ptrClass,datatype,isptr);
+}
+
+//_______________________________________________________________________
+void TTree::SetBranchAddress(const char *bname, void *add, TBranch **ptr,
+                             TClass *ptrClass, EDataType datatype,
+                             Bool_t isptr)
 {
    //  Verify the validity of the type of add before calling SetBranchAddress.
 
    TBranch *branch = GetBranch(bname);
+   if (ptr) *ptr = branch;
    if (branch) {
 
-      CheckBranchAddressType(branch,ptrClass,datatype,ptr);
+      CheckBranchAddressType(branch,ptrClass,datatype,isptr);
       SetBranchAddress(bname,add);
 
    } else {
diff --git a/treeplayer/src/TTreePlayer.cxx b/treeplayer/src/TTreePlayer.cxx
index d7df35a46658ffc03db92bfb97da54d73ecabb21..1a846fa875c17b46a25d3527eda602d2eaacea84 100644
--- a/treeplayer/src/TTreePlayer.cxx
+++ b/treeplayer/src/TTreePlayer.cxx
@@ -1,4 +1,4 @@
-// @(#)root/treeplayer:$Name:  $:$Id: TTreePlayer.cxx,v 1.214 2006/06/14 13:15:55 brun Exp $
+// @(#)root/treeplayer:$Name:  $:$Id: TTreePlayer.cxx,v 1.215 2006/06/16 11:01:17 brun Exp $
 // Author: Rene Brun   12/01/96
 
 /*************************************************************************
@@ -1704,8 +1704,11 @@ Int_t TTreePlayer::MakeClass(const char *classname, const char *option)
          if (((TBranchElement*)branch)->GetType() == 4) len =1;
       }
       if (leafcount) len = leafcount->GetMaximum()+1;
-      if (len > 1) fprintf(fp,"   fChain->SetBranchAddress(\"%s\",%s);\n",branch->GetName(),branchname);
-      else         fprintf(fp,"   fChain->SetBranchAddress(\"%s\",&%s);\n",branch->GetName(),branchname);
+      if (len > 1) fprintf(fp,"   fChain->SetBranchAddress(\"%s\",%s,&(b_%s) );\n",
+                           branch->GetName(),branchname,branchname);
+      else         fprintf(fp,"   fChain->SetBranchAddress(\"%s\",&%s,&(b_%s) );\n",
+                           branch->GetName(),branchname,branchname);
+
    }
    //must call Notify in case of MakeClass
    if (!opt.Contains("selector")) {
@@ -1720,57 +1723,10 @@ Int_t TTreePlayer::MakeClass(const char *classname, const char *option)
    fprintf(fp,"{\n");
    fprintf(fp,"   // The Notify() function is called when a new file is opened. This\n"
               "   // can be either for a new TTree in a TChain or when when a new TTree\n"
-              "   // is started when using PROOF. Typically here the branch pointers\n"
-              "   // will be retrieved. It is normaly not necessary to make changes\n"
+              "   // is started when using PROOF. It is normaly not necessary to make changes\n"
               "   // to the generated code, but the routine can be extended by the\n"
               "   // user if needed.\n\n");
-   fprintf(fp,"   // Get branch pointers\n");
-   for (l=0;l<nleaves;l++) {
-      if (leafStatus[l]) continue;
-      TLeaf *leaf = (TLeaf*)leaves->UncheckedAt(l);
-      len = leaf->GetLen();
-      leafcount = leaf->GetLeafCount();
-      TBranch *branch = leaf->GetBranch();
-      strcpy(branchname,branch->GetName());
-      if ( branch->GetNleaves() <= 1 ) {
-         // Code duplicated around line 1120
-         if (branch->IsA() != TBranchObject::Class()) {
-            if (!leafcount) {
-               TBranch *mother = branch->GetMother();
-               const char* ltitle = leaf->GetTitle();
-               if (mother && mother!=branch) {
-                  strcpy(branchname,mother->GetName());
-                  if (branchname[strlen(branchname)-1]!='.') {
-                     strcat(branchname,".");
-                  }
-                  if (strncmp(branchname,ltitle,strlen(branchname))==0) {
-                     branchname[0] = 0;
-                  }
-               } else {
-                  branchname[0] = 0;
-               }
-               strcat(branchname,ltitle);
-            }
-         }
-      }
-      bname = branchname;
-      char *twodim = (char*)strstr(bname,"["); if (twodim) *twodim = 0;
-      while (*bname) {
-         if (*bname == '.') *bname='_';
-         if (*bname == ':') *bname='_';
-         if (*bname == '<') *bname='_';
-         if (*bname == '>') *bname='_';
-         bname++;
-      }
-      if (branch->IsA() == TBranchObject::Class()) {
-         if (branch->GetListOfBranches()->GetEntriesFast()) {
-            fprintf(fp,"   b_%s = fChain->GetBranch(\"%s\");\n",branchname,branch->GetName());
-            continue;
-         }
-         strcpy(branchname,branch->GetName());
-      }
-      fprintf(fp,"   b_%s = fChain->GetBranch(\"%s\");\n",branchname,branch->GetName());
-   }
+
    fprintf(fp,"\n   return kTRUE;\n");
    fprintf(fp,"}\n");
    fprintf(fp,"\n");
diff --git a/tutorials/h1analysis.h b/tutorials/h1analysis.h
index 304038ad7fe8fce63211c6f56c58f3b5eae73585..cc276476adfaf8d4099ffcc41814c61e4b1a72be 100644
--- a/tutorials/h1analysis.h
+++ b/tutorials/h1analysis.h
@@ -369,158 +369,158 @@ void h1analysis::Init(TTree *tree)
    if (tree == 0) return;
    fChain    = tree;
 
-   fChain->SetBranchAddress("nrun",&nrun);
-   fChain->SetBranchAddress("nevent",&nevent);
-   fChain->SetBranchAddress("nentry",&nentry);
-   fChain->SetBranchAddress("trelem",trelem);
-   fChain->SetBranchAddress("subtr",subtr);
-   fChain->SetBranchAddress("rawtr",rawtr);
-   fChain->SetBranchAddress("L4subtr",L4subtr);
-   fChain->SetBranchAddress("L5class",L5class);
-   fChain->SetBranchAddress("E33",&E33);
-   fChain->SetBranchAddress("de33",&de33);
-   fChain->SetBranchAddress("x33",&x33);
-   fChain->SetBranchAddress("dx33",&dx33);
-   fChain->SetBranchAddress("y33",&y33);
-   fChain->SetBranchAddress("dy33",&dy33);
-   fChain->SetBranchAddress("E44",&E44);
-   fChain->SetBranchAddress("de44",&de44);
-   fChain->SetBranchAddress("x44",&x44);
-   fChain->SetBranchAddress("dx44",&dx44);
-   fChain->SetBranchAddress("y44",&y44);
-   fChain->SetBranchAddress("dy44",&dy44);
-   fChain->SetBranchAddress("Ept",&Ept);
-   fChain->SetBranchAddress("dept",&dept);
-   fChain->SetBranchAddress("xpt",&xpt);
-   fChain->SetBranchAddress("dxpt",&dxpt);
-   fChain->SetBranchAddress("ypt",&ypt);
-   fChain->SetBranchAddress("dypt",&dypt);
-   fChain->SetBranchAddress("pelec",pelec);
-   fChain->SetBranchAddress("flagelec",&flagelec);
-   fChain->SetBranchAddress("xeelec",&xeelec);
-   fChain->SetBranchAddress("yeelec",&yeelec);
-   fChain->SetBranchAddress("Q2eelec",&Q2eelec);
-   fChain->SetBranchAddress("nelec",&nelec);
-   fChain->SetBranchAddress("Eelec",Eelec);
-   fChain->SetBranchAddress("thetelec",thetelec);
-   fChain->SetBranchAddress("phielec",phielec);
-   fChain->SetBranchAddress("xelec",xelec);
-   fChain->SetBranchAddress("Q2elec",Q2elec);
-   fChain->SetBranchAddress("xsigma",xsigma);
-   fChain->SetBranchAddress("Q2sigma",Q2sigma);
-   fChain->SetBranchAddress("sumc",sumc);
-   fChain->SetBranchAddress("sumetc",&sumetc);
-   fChain->SetBranchAddress("yjbc",&yjbc);
-   fChain->SetBranchAddress("Q2jbc",&Q2jbc);
-   fChain->SetBranchAddress("sumct",sumct);
-   fChain->SetBranchAddress("sumetct",&sumetct);
-   fChain->SetBranchAddress("yjbct",&yjbct);
-   fChain->SetBranchAddress("Q2jbct",&Q2jbct);
-   fChain->SetBranchAddress("Ebeamel",&Ebeamel);
-   fChain->SetBranchAddress("Ebeampr",&Ebeampr);
-   fChain->SetBranchAddress("pvtx_d",pvtx_d);
-   fChain->SetBranchAddress("cpvtx_d",cpvtx_d);
-   fChain->SetBranchAddress("pvtx_t",pvtx_t);
-   fChain->SetBranchAddress("cpvtx_t",cpvtx_t);
-   fChain->SetBranchAddress("ntrkxy_t",&ntrkxy_t);
-   fChain->SetBranchAddress("prbxy_t",&prbxy_t);
-   fChain->SetBranchAddress("ntrkz_t",&ntrkz_t);
-   fChain->SetBranchAddress("prbz_t",&prbz_t);
-   fChain->SetBranchAddress("nds",&nds);
-   fChain->SetBranchAddress("rankds",&rankds);
-   fChain->SetBranchAddress("qds",&qds);
-   fChain->SetBranchAddress("pds_d",pds_d);
-   fChain->SetBranchAddress("ptds_d",&ptds_d);
-   fChain->SetBranchAddress("etads_d",&etads_d);
-   fChain->SetBranchAddress("dm_d",&dm_d);
-   fChain->SetBranchAddress("ddm_d",&ddm_d);
-   fChain->SetBranchAddress("pds_t",pds_t);
-   fChain->SetBranchAddress("dm_t",&dm_t);
-   fChain->SetBranchAddress("ddm_t",&ddm_t);
-   fChain->SetBranchAddress("ik",&ik);
-   fChain->SetBranchAddress("ipi",&ipi);
-   fChain->SetBranchAddress("ipis",&ipis);
-   fChain->SetBranchAddress("pd0_d",pd0_d);
-   fChain->SetBranchAddress("ptd0_d",&ptd0_d);
-   fChain->SetBranchAddress("etad0_d",&etad0_d);
-   fChain->SetBranchAddress("md0_d",&md0_d);
-   fChain->SetBranchAddress("dmd0_d",&dmd0_d);
-   fChain->SetBranchAddress("pd0_t",pd0_t);
-   fChain->SetBranchAddress("md0_t",&md0_t);
-   fChain->SetBranchAddress("dmd0_t",&dmd0_t);
-   fChain->SetBranchAddress("pk_r",pk_r);
-   fChain->SetBranchAddress("ppi_r",ppi_r);
-   fChain->SetBranchAddress("pd0_r",pd0_r);
-   fChain->SetBranchAddress("md0_r",&md0_r);
-   fChain->SetBranchAddress("Vtxd0_r",Vtxd0_r);
-   fChain->SetBranchAddress("cvtxd0_r",cvtxd0_r);
-   fChain->SetBranchAddress("dxy_r",&dxy_r);
-   fChain->SetBranchAddress("dz_r",&dz_r);
-   fChain->SetBranchAddress("psi_r",&psi_r);
-   fChain->SetBranchAddress("rd0_d",&rd0_d);
-   fChain->SetBranchAddress("drd0_d",&drd0_d);
-   fChain->SetBranchAddress("rpd0_d",&rpd0_d);
-   fChain->SetBranchAddress("drpd0_d",&drpd0_d);
-   fChain->SetBranchAddress("rd0_t",&rd0_t);
-   fChain->SetBranchAddress("drd0_t",&drd0_t);
-   fChain->SetBranchAddress("rpd0_t",&rpd0_t);
-   fChain->SetBranchAddress("drpd0_t",&drpd0_t);
-   fChain->SetBranchAddress("rd0_dt",&rd0_dt);
-   fChain->SetBranchAddress("drd0_dt",&drd0_dt);
-   fChain->SetBranchAddress("prbr_dt",&prbr_dt);
-   fChain->SetBranchAddress("prbz_dt",&prbz_dt);
-   fChain->SetBranchAddress("rd0_tt",&rd0_tt);
-   fChain->SetBranchAddress("drd0_tt",&drd0_tt);
-   fChain->SetBranchAddress("prbr_tt",&prbr_tt);
-   fChain->SetBranchAddress("prbz_tt",&prbz_tt);
-   fChain->SetBranchAddress("ijetd0",&ijetd0);
-   fChain->SetBranchAddress("ptr3d0_j",&ptr3d0_j);
-   fChain->SetBranchAddress("ptr2d0_j",&ptr2d0_j);
-   fChain->SetBranchAddress("ptr3d0_3",&ptr3d0_3);
-   fChain->SetBranchAddress("ptr2d0_3",&ptr2d0_3);
-   fChain->SetBranchAddress("ptr2d0_2",&ptr2d0_2);
-   fChain->SetBranchAddress("Mimpds_r",&Mimpds_r);
-   fChain->SetBranchAddress("Mimpbk_r",&Mimpbk_r);
-   fChain->SetBranchAddress("ntracks",&ntracks);
-   fChain->SetBranchAddress("pt",pt);
-   fChain->SetBranchAddress("kappa",kappa);
-   fChain->SetBranchAddress("phi",phi);
-   fChain->SetBranchAddress("theta",theta);
-   fChain->SetBranchAddress("dca",dca);
-   fChain->SetBranchAddress("z0",z0);
-   fChain->SetBranchAddress("covar",covar);
-   fChain->SetBranchAddress("nhitrp",nhitrp);
-   fChain->SetBranchAddress("prbrp",prbrp);
-   fChain->SetBranchAddress("nhitz",nhitz);
-   fChain->SetBranchAddress("prbz",prbz);
-   fChain->SetBranchAddress("rstart",rstart);
-   fChain->SetBranchAddress("rend",rend);
-   fChain->SetBranchAddress("lhk",lhk);
-   fChain->SetBranchAddress("lhpi",lhpi);
-   fChain->SetBranchAddress("nlhk",nlhk);
-   fChain->SetBranchAddress("nlhpi",nlhpi);
-   fChain->SetBranchAddress("dca_d",dca_d);
-   fChain->SetBranchAddress("ddca_d",ddca_d);
-   fChain->SetBranchAddress("dca_t",dca_t);
-   fChain->SetBranchAddress("ddca_t",ddca_t);
-   fChain->SetBranchAddress("muqual",muqual);
-   fChain->SetBranchAddress("imu",&imu);
-   fChain->SetBranchAddress("imufe",&imufe);
-   fChain->SetBranchAddress("njets",&njets);
-   fChain->SetBranchAddress("E_j",E_j);
-   fChain->SetBranchAddress("pt_j",pt_j);
-   fChain->SetBranchAddress("theta_j",theta_j);
-   fChain->SetBranchAddress("eta_j",eta_j);
-   fChain->SetBranchAddress("phi_j",phi_j);
-   fChain->SetBranchAddress("m_j",m_j);
-   fChain->SetBranchAddress("thrust",&thrust);
-   fChain->SetBranchAddress("pthrust",pthrust);
-   fChain->SetBranchAddress("thrust2",&thrust2);
-   fChain->SetBranchAddress("pthrust2",pthrust2);
-   fChain->SetBranchAddress("spher",&spher);
-   fChain->SetBranchAddress("aplan",&aplan);
-   fChain->SetBranchAddress("plan",&plan);
-   fChain->SetBranchAddress("nnout",&nnout);
+   fChain->SetBranchAddress("nrun",&nrun,&(b_nrun) );
+   fChain->SetBranchAddress("nevent",&nevent,&(b_nevent) );
+   fChain->SetBranchAddress("nentry",&nentry,&(b_nentry) );
+   fChain->SetBranchAddress("trelem",trelem,&(b_trelem) );
+   fChain->SetBranchAddress("subtr",subtr,&(b_subtr) );
+   fChain->SetBranchAddress("rawtr",rawtr,&(b_rawtr) );
+   fChain->SetBranchAddress("L4subtr",L4subtr,&(b_L4subtr) );
+   fChain->SetBranchAddress("L5class",L5class,&(b_L5class) );
+   fChain->SetBranchAddress("E33",&E33,&(b_E33) );
+   fChain->SetBranchAddress("de33",&de33,&(b_de33) );
+   fChain->SetBranchAddress("x33",&x33,&(b_x33) );
+   fChain->SetBranchAddress("dx33",&dx33,&(b_dx33) );
+   fChain->SetBranchAddress("y33",&y33,&(b_y33) );
+   fChain->SetBranchAddress("dy33",&dy33,&(b_dy33) );
+   fChain->SetBranchAddress("E44",&E44,&(b_E44) );
+   fChain->SetBranchAddress("de44",&de44,&(b_de44) );
+   fChain->SetBranchAddress("x44",&x44,&(b_x44) );
+   fChain->SetBranchAddress("dx44",&dx44,&(b_dx44) );
+   fChain->SetBranchAddress("y44",&y44,&(b_y44) );
+   fChain->SetBranchAddress("dy44",&dy44,&(b_dy44) );
+   fChain->SetBranchAddress("Ept",&Ept,&(b_Ept) );
+   fChain->SetBranchAddress("dept",&dept,&(b_dept) );
+   fChain->SetBranchAddress("xpt",&xpt,&(b_xpt) );
+   fChain->SetBranchAddress("dxpt",&dxpt,&(b_dxpt) );
+   fChain->SetBranchAddress("ypt",&ypt,&(b_ypt) );
+   fChain->SetBranchAddress("dypt",&dypt,&(b_dypt) );
+   fChain->SetBranchAddress("pelec",pelec,&(b_pelec) );
+   fChain->SetBranchAddress("flagelec",&flagelec,&(b_flagelec) );
+   fChain->SetBranchAddress("xeelec",&xeelec,&(b_xeelec) );
+   fChain->SetBranchAddress("yeelec",&yeelec,&(b_yeelec) );
+   fChain->SetBranchAddress("Q2eelec",&Q2eelec,&(b_Q2eelec) );
+   fChain->SetBranchAddress("nelec",&nelec,&(b_nelec) );
+   fChain->SetBranchAddress("Eelec",Eelec,&(b_Eelec) );
+   fChain->SetBranchAddress("thetelec",thetelec,&(b_thetelec) );
+   fChain->SetBranchAddress("phielec",phielec,&(b_phielec) );
+   fChain->SetBranchAddress("xelec",xelec,&(b_xelec) );
+   fChain->SetBranchAddress("Q2elec",Q2elec,&(b_Q2elec) );
+   fChain->SetBranchAddress("xsigma",xsigma,&(b_xsigma) );
+   fChain->SetBranchAddress("Q2sigma",Q2sigma,&(b_Q2sigma) );
+   fChain->SetBranchAddress("sumc",sumc,&(b_sumc) );
+   fChain->SetBranchAddress("sumetc",&sumetc,&(b_sumetc) );
+   fChain->SetBranchAddress("yjbc",&yjbc,&(b_yjbc) );
+   fChain->SetBranchAddress("Q2jbc",&Q2jbc,&(b_Q2jbc) );
+   fChain->SetBranchAddress("sumct",sumct,&(b_sumct) );
+   fChain->SetBranchAddress("sumetct",&sumetct,&(b_sumetct) );
+   fChain->SetBranchAddress("yjbct",&yjbct,&(b_yjbct) );
+   fChain->SetBranchAddress("Q2jbct",&Q2jbct,&(b_Q2jbct) );
+   fChain->SetBranchAddress("Ebeamel",&Ebeamel,&(b_Ebeamel) );
+   fChain->SetBranchAddress("Ebeampr",&Ebeampr,&(b_Ebeampr) );
+   fChain->SetBranchAddress("pvtx_d",pvtx_d,&(b_pvtx_d) );
+   fChain->SetBranchAddress("cpvtx_d",cpvtx_d,&(b_cpvtx_d) );
+   fChain->SetBranchAddress("pvtx_t",pvtx_t,&(b_pvtx_t) );
+   fChain->SetBranchAddress("cpvtx_t",cpvtx_t,&(b_cpvtx_t) );
+   fChain->SetBranchAddress("ntrkxy_t",&ntrkxy_t,&(b_ntrkxy_t) );
+   fChain->SetBranchAddress("prbxy_t",&prbxy_t,&(b_prbxy_t) );
+   fChain->SetBranchAddress("ntrkz_t",&ntrkz_t,&(b_ntrkz_t) );
+   fChain->SetBranchAddress("prbz_t",&prbz_t,&(b_prbz_t) );
+   fChain->SetBranchAddress("nds",&nds,&(b_nds) );
+   fChain->SetBranchAddress("rankds",&rankds,&(b_rankds) );
+   fChain->SetBranchAddress("qds",&qds,&(b_qds) );
+   fChain->SetBranchAddress("pds_d",pds_d,&(b_pds_d) );
+   fChain->SetBranchAddress("ptds_d",&ptds_d,&(b_ptds_d) );
+   fChain->SetBranchAddress("etads_d",&etads_d,&(b_etads_d) );
+   fChain->SetBranchAddress("dm_d",&dm_d,&(b_dm_d) );
+   fChain->SetBranchAddress("ddm_d",&ddm_d,&(b_ddm_d) );
+   fChain->SetBranchAddress("pds_t",pds_t,&(b_pds_t) );
+   fChain->SetBranchAddress("dm_t",&dm_t,&(b_dm_t) );
+   fChain->SetBranchAddress("ddm_t",&ddm_t,&(b_ddm_t) );
+   fChain->SetBranchAddress("ik",&ik,&(b_ik) );
+   fChain->SetBranchAddress("ipi",&ipi,&(b_ipi) );
+   fChain->SetBranchAddress("ipis",&ipis,&(b_ipis) );
+   fChain->SetBranchAddress("pd0_d",pd0_d,&(b_pd0_d) );
+   fChain->SetBranchAddress("ptd0_d",&ptd0_d,&(b_ptd0_d) );
+   fChain->SetBranchAddress("etad0_d",&etad0_d,&(b_etad0_d) );
+   fChain->SetBranchAddress("md0_d",&md0_d,&(b_md0_d) );
+   fChain->SetBranchAddress("dmd0_d",&dmd0_d,&(b_dmd0_d) );
+   fChain->SetBranchAddress("pd0_t",pd0_t,&(b_pd0_t) );
+   fChain->SetBranchAddress("md0_t",&md0_t,&(b_md0_t) );
+   fChain->SetBranchAddress("dmd0_t",&dmd0_t,&(b_dmd0_t) );
+   fChain->SetBranchAddress("pk_r",pk_r,&(b_pk_r) );
+   fChain->SetBranchAddress("ppi_r",ppi_r,&(b_ppi_r) );
+   fChain->SetBranchAddress("pd0_r",pd0_r,&(b_pd0_r) );
+   fChain->SetBranchAddress("md0_r",&md0_r,&(b_md0_r) );
+   fChain->SetBranchAddress("Vtxd0_r",Vtxd0_r,&(b_Vtxd0_r) );
+   fChain->SetBranchAddress("cvtxd0_r",cvtxd0_r,&(b_cvtxd0_r) );
+   fChain->SetBranchAddress("dxy_r",&dxy_r,&(b_dxy_r) );
+   fChain->SetBranchAddress("dz_r",&dz_r,&(b_dz_r) );
+   fChain->SetBranchAddress("psi_r",&psi_r,&(b_psi_r) );
+   fChain->SetBranchAddress("rd0_d",&rd0_d,&(b_rd0_d) );
+   fChain->SetBranchAddress("drd0_d",&drd0_d,&(b_drd0_d) );
+   fChain->SetBranchAddress("rpd0_d",&rpd0_d,&(b_rpd0_d) );
+   fChain->SetBranchAddress("drpd0_d",&drpd0_d,&(b_drpd0_d) );
+   fChain->SetBranchAddress("rd0_t",&rd0_t,&(b_rd0_t) );
+   fChain->SetBranchAddress("drd0_t",&drd0_t,&(b_drd0_t) );
+   fChain->SetBranchAddress("rpd0_t",&rpd0_t,&(b_rpd0_t) );
+   fChain->SetBranchAddress("drpd0_t",&drpd0_t,&(b_drpd0_t) );
+   fChain->SetBranchAddress("rd0_dt",&rd0_dt,&(b_rd0_dt) );
+   fChain->SetBranchAddress("drd0_dt",&drd0_dt,&(b_drd0_dt) );
+   fChain->SetBranchAddress("prbr_dt",&prbr_dt,&(b_prbr_dt) );
+   fChain->SetBranchAddress("prbz_dt",&prbz_dt,&(b_prbz_dt) );
+   fChain->SetBranchAddress("rd0_tt",&rd0_tt,&(b_rd0_tt) );
+   fChain->SetBranchAddress("drd0_tt",&drd0_tt,&(b_drd0_tt) );
+   fChain->SetBranchAddress("prbr_tt",&prbr_tt,&(b_prbr_tt) );
+   fChain->SetBranchAddress("prbz_tt",&prbz_tt,&(b_prbz_tt) );
+   fChain->SetBranchAddress("ijetd0",&ijetd0,&(b_ijetd0) );
+   fChain->SetBranchAddress("ptr3d0_j",&ptr3d0_j,&(b_ptr3d0_j) );
+   fChain->SetBranchAddress("ptr2d0_j",&ptr2d0_j,&(b_ptr2d0_j) );
+   fChain->SetBranchAddress("ptr3d0_3",&ptr3d0_3,&(b_ptr3d0_3) );
+   fChain->SetBranchAddress("ptr2d0_3",&ptr2d0_3,&(b_ptr2d0_3) );
+   fChain->SetBranchAddress("ptr2d0_2",&ptr2d0_2,&(b_ptr2d0_2) );
+   fChain->SetBranchAddress("Mimpds_r",&Mimpds_r,&(b_Mimpds_r) );
+   fChain->SetBranchAddress("Mimpbk_r",&Mimpbk_r,&(b_Mimpbk_r) );
+   fChain->SetBranchAddress("ntracks",&ntracks,&(b_ntracks) );
+   fChain->SetBranchAddress("pt",pt,&(b_pt) );
+   fChain->SetBranchAddress("kappa",kappa,&(b_kappa) );
+   fChain->SetBranchAddress("phi",phi,&(b_phi) );
+   fChain->SetBranchAddress("theta",theta,&(b_theta) );
+   fChain->SetBranchAddress("dca",dca,&(b_dca) );
+   fChain->SetBranchAddress("z0",z0,&(b_z0) );
+   fChain->SetBranchAddress("covar",covar,&(b_covar) );
+   fChain->SetBranchAddress("nhitrp",nhitrp,&(b_nhitrp) );
+   fChain->SetBranchAddress("prbrp",prbrp,&(b_prbrp) );
+   fChain->SetBranchAddress("nhitz",nhitz,&(b_nhitz) );
+   fChain->SetBranchAddress("prbz",prbz,&(b_prbz) );
+   fChain->SetBranchAddress("rstart",rstart,&(b_rstart) );
+   fChain->SetBranchAddress("rend",rend,&(b_rend) );
+   fChain->SetBranchAddress("lhk",lhk,&(b_lhk) );
+   fChain->SetBranchAddress("lhpi",lhpi,&(b_lhpi) );
+   fChain->SetBranchAddress("nlhk",nlhk,&(b_nlhk) );
+   fChain->SetBranchAddress("nlhpi",nlhpi,&(b_nlhpi) );
+   fChain->SetBranchAddress("dca_d",dca_d,&(b_dca_d) );
+   fChain->SetBranchAddress("ddca_d",ddca_d,&(b_ddca_d) );
+   fChain->SetBranchAddress("dca_t",dca_t,&(b_dca_t) );
+   fChain->SetBranchAddress("ddca_t",ddca_t,&(b_ddca_t) );
+   fChain->SetBranchAddress("muqual",muqual,&(b_muqual) );
+   fChain->SetBranchAddress("imu",&imu,&(b_imu) );
+   fChain->SetBranchAddress("imufe",&imufe,&(b_imufe) );
+   fChain->SetBranchAddress("njets",&njets,&(b_njets) );
+   fChain->SetBranchAddress("E_j",E_j,&(b_E_j) );
+   fChain->SetBranchAddress("pt_j",pt_j,&(b_pt_j) );
+   fChain->SetBranchAddress("theta_j",theta_j,&(b_theta_j) );
+   fChain->SetBranchAddress("eta_j",eta_j,&(b_eta_j) );
+   fChain->SetBranchAddress("phi_j",phi_j,&(b_phi_j) );
+   fChain->SetBranchAddress("m_j",m_j,&(b_m_j) );
+   fChain->SetBranchAddress("thrust",&thrust,&(b_thrust) );
+   fChain->SetBranchAddress("pthrust",pthrust,&(b_pthrust) );
+   fChain->SetBranchAddress("thrust2",&thrust2,&(b_thrust2) );
+   fChain->SetBranchAddress("pthrust2",pthrust2,&(b_pthrust2) );
+   fChain->SetBranchAddress("spher",&spher,&(b_spher) );
+   fChain->SetBranchAddress("aplan",&aplan,&(b_aplan) );
+   fChain->SetBranchAddress("plan",&plan,&(b_plan) );
+   fChain->SetBranchAddress("nnout",&nnout,&(b_nnout) );
 }
 
 //_____________________________________________________________________
@@ -530,157 +530,5 @@ Bool_t h1analysis::Notify()
 //   get branch pointers
 
    printf("Processing file: %s\n",fChain->GetCurrentFile()->GetName());
-   b_nrun = fChain->GetBranch("nrun");
-   b_nevent = fChain->GetBranch("nevent");
-   b_nentry = fChain->GetBranch("nentry");
-   b_trelem = fChain->GetBranch("trelem");
-   b_subtr = fChain->GetBranch("subtr");
-   b_rawtr = fChain->GetBranch("rawtr");
-   b_L4subtr = fChain->GetBranch("L4subtr");
-   b_L5class = fChain->GetBranch("L5class");
-   b_E33 = fChain->GetBranch("E33");
-   b_de33 = fChain->GetBranch("de33");
-   b_x33 = fChain->GetBranch("x33");
-   b_dx33 = fChain->GetBranch("dx33");
-   b_y33 = fChain->GetBranch("y33");
-   b_dy33 = fChain->GetBranch("dy33");
-   b_E44 = fChain->GetBranch("E44");
-   b_de44 = fChain->GetBranch("de44");
-   b_x44 = fChain->GetBranch("x44");
-   b_dx44 = fChain->GetBranch("dx44");
-   b_y44 = fChain->GetBranch("y44");
-   b_dy44 = fChain->GetBranch("dy44");
-   b_Ept = fChain->GetBranch("Ept");
-   b_dept = fChain->GetBranch("dept");
-   b_xpt = fChain->GetBranch("xpt");
-   b_dxpt = fChain->GetBranch("dxpt");
-   b_ypt = fChain->GetBranch("ypt");
-   b_dypt = fChain->GetBranch("dypt");
-   b_pelec = fChain->GetBranch("pelec");
-   b_flagelec = fChain->GetBranch("flagelec");
-   b_xeelec = fChain->GetBranch("xeelec");
-   b_yeelec = fChain->GetBranch("yeelec");
-   b_Q2eelec = fChain->GetBranch("Q2eelec");
-   b_nelec = fChain->GetBranch("nelec");
-   b_Eelec = fChain->GetBranch("Eelec");
-   b_thetelec = fChain->GetBranch("thetelec");
-   b_phielec = fChain->GetBranch("phielec");
-   b_xelec = fChain->GetBranch("xelec");
-   b_Q2elec = fChain->GetBranch("Q2elec");
-   b_xsigma = fChain->GetBranch("xsigma");
-   b_Q2sigma = fChain->GetBranch("Q2sigma");
-   b_sumc = fChain->GetBranch("sumc");
-   b_sumetc = fChain->GetBranch("sumetc");
-   b_yjbc = fChain->GetBranch("yjbc");
-   b_Q2jbc = fChain->GetBranch("Q2jbc");
-   b_sumct = fChain->GetBranch("sumct");
-   b_sumetct = fChain->GetBranch("sumetct");
-   b_yjbct = fChain->GetBranch("yjbct");
-   b_Q2jbct = fChain->GetBranch("Q2jbct");
-   b_Ebeamel = fChain->GetBranch("Ebeamel");
-   b_Ebeampr = fChain->GetBranch("Ebeampr");
-   b_pvtx_d = fChain->GetBranch("pvtx_d");
-   b_cpvtx_d = fChain->GetBranch("cpvtx_d");
-   b_pvtx_t = fChain->GetBranch("pvtx_t");
-   b_cpvtx_t = fChain->GetBranch("cpvtx_t");
-   b_ntrkxy_t = fChain->GetBranch("ntrkxy_t");
-   b_prbxy_t = fChain->GetBranch("prbxy_t");
-   b_ntrkz_t = fChain->GetBranch("ntrkz_t");
-   b_prbz_t = fChain->GetBranch("prbz_t");
-   b_nds = fChain->GetBranch("nds");
-   b_rankds = fChain->GetBranch("rankds");
-   b_qds = fChain->GetBranch("qds");
-   b_pds_d = fChain->GetBranch("pds_d");
-   b_ptds_d = fChain->GetBranch("ptds_d");
-   b_etads_d = fChain->GetBranch("etads_d");
-   b_dm_d = fChain->GetBranch("dm_d");
-   b_ddm_d = fChain->GetBranch("ddm_d");
-   b_pds_t = fChain->GetBranch("pds_t");
-   b_dm_t = fChain->GetBranch("dm_t");
-   b_ddm_t = fChain->GetBranch("ddm_t");
-   b_ik = fChain->GetBranch("ik");
-   b_ipi = fChain->GetBranch("ipi");
-   b_ipis = fChain->GetBranch("ipis");
-   b_pd0_d = fChain->GetBranch("pd0_d");
-   b_ptd0_d = fChain->GetBranch("ptd0_d");
-   b_etad0_d = fChain->GetBranch("etad0_d");
-   b_md0_d = fChain->GetBranch("md0_d");
-   b_dmd0_d = fChain->GetBranch("dmd0_d");
-   b_pd0_t = fChain->GetBranch("pd0_t");
-   b_md0_t = fChain->GetBranch("md0_t");
-   b_dmd0_t = fChain->GetBranch("dmd0_t");
-   b_pk_r = fChain->GetBranch("pk_r");
-   b_ppi_r = fChain->GetBranch("ppi_r");
-   b_pd0_r = fChain->GetBranch("pd0_r");
-   b_md0_r = fChain->GetBranch("md0_r");
-   b_Vtxd0_r = fChain->GetBranch("Vtxd0_r");
-   b_cvtxd0_r = fChain->GetBranch("cvtxd0_r");
-   b_dxy_r = fChain->GetBranch("dxy_r");
-   b_dz_r = fChain->GetBranch("dz_r");
-   b_psi_r = fChain->GetBranch("psi_r");
-   b_rd0_d = fChain->GetBranch("rd0_d");
-   b_drd0_d = fChain->GetBranch("drd0_d");
-   b_rpd0_d = fChain->GetBranch("rpd0_d");
-   b_drpd0_d = fChain->GetBranch("drpd0_d");
-   b_rd0_t = fChain->GetBranch("rd0_t");
-   b_drd0_t = fChain->GetBranch("drd0_t");
-   b_rpd0_t = fChain->GetBranch("rpd0_t");
-   b_drpd0_t = fChain->GetBranch("drpd0_t");
-   b_rd0_dt = fChain->GetBranch("rd0_dt");
-   b_drd0_dt = fChain->GetBranch("drd0_dt");
-   b_prbr_dt = fChain->GetBranch("prbr_dt");
-   b_prbz_dt = fChain->GetBranch("prbz_dt");
-   b_rd0_tt = fChain->GetBranch("rd0_tt");
-   b_drd0_tt = fChain->GetBranch("drd0_tt");
-   b_prbr_tt = fChain->GetBranch("prbr_tt");
-   b_prbz_tt = fChain->GetBranch("prbz_tt");
-   b_ijetd0 = fChain->GetBranch("ijetd0");
-   b_ptr3d0_j = fChain->GetBranch("ptr3d0_j");
-   b_ptr2d0_j = fChain->GetBranch("ptr2d0_j");
-   b_ptr3d0_3 = fChain->GetBranch("ptr3d0_3");
-   b_ptr2d0_3 = fChain->GetBranch("ptr2d0_3");
-   b_ptr2d0_2 = fChain->GetBranch("ptr2d0_2");
-   b_Mimpds_r = fChain->GetBranch("Mimpds_r");
-   b_Mimpbk_r = fChain->GetBranch("Mimpbk_r");
-   b_ntracks = fChain->GetBranch("ntracks");
-   b_pt = fChain->GetBranch("pt");
-   b_kappa = fChain->GetBranch("kappa");
-   b_phi = fChain->GetBranch("phi");
-   b_theta = fChain->GetBranch("theta");
-   b_dca = fChain->GetBranch("dca");
-   b_z0 = fChain->GetBranch("z0");
-   b_covar = fChain->GetBranch("covar");
-   b_nhitrp = fChain->GetBranch("nhitrp");
-   b_prbrp = fChain->GetBranch("prbrp");
-   b_nhitz = fChain->GetBranch("nhitz");
-   b_prbz = fChain->GetBranch("prbz");
-   b_rstart = fChain->GetBranch("rstart");
-   b_rend = fChain->GetBranch("rend");
-   b_lhk = fChain->GetBranch("lhk");
-   b_lhpi = fChain->GetBranch("lhpi");
-   b_nlhk = fChain->GetBranch("nlhk");
-   b_nlhpi = fChain->GetBranch("nlhpi");
-   b_dca_d = fChain->GetBranch("dca_d");
-   b_ddca_d = fChain->GetBranch("ddca_d");
-   b_dca_t = fChain->GetBranch("dca_t");
-   b_ddca_t = fChain->GetBranch("ddca_t");
-   b_muqual = fChain->GetBranch("muqual");
-   b_imu = fChain->GetBranch("imu");
-   b_imufe = fChain->GetBranch("imufe");
-   b_njets = fChain->GetBranch("njets");
-   b_E_j = fChain->GetBranch("E_j");
-   b_pt_j = fChain->GetBranch("pt_j");
-   b_theta_j = fChain->GetBranch("theta_j");
-   b_eta_j = fChain->GetBranch("eta_j");
-   b_phi_j = fChain->GetBranch("phi_j");
-   b_m_j = fChain->GetBranch("m_j");
-   b_thrust = fChain->GetBranch("thrust");
-   b_pthrust = fChain->GetBranch("pthrust");
-   b_thrust2 = fChain->GetBranch("thrust2");
-   b_pthrust2 = fChain->GetBranch("pthrust2");
-   b_spher = fChain->GetBranch("spher");
-   b_aplan = fChain->GetBranch("aplan");
-   b_plan = fChain->GetBranch("plan");
-   b_nnout = fChain->GetBranch("nnout");
    return kTRUE;
 }