Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TFriendProxy.cxx
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Philippe Canal 13/05/2003
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun, Fons Rademakers and al. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12/** \class TFriendProxy
13Concrete implementation of the proxy around a Friend Tree.
14*/
15
16#include "TFriendProxy.h"
17#include "TTree.h"
18#include "TList.h"
19#include "TFriendElement.h"
20
22
23namespace ROOT {
24namespace Internal {
25
26/////////////////////////////////////////////////////////////////////////////
27
28TFriendProxy::TFriendProxy() : fDirector(0,-1), fIndex(-1)
29{
30}
31
32 /////////////////////////////////////////////////////////////////////////////
33 /// Constructor.
34
36 fDirector(0,-1), fIndex(index)
37 {
38 // The list of friends needs to be accessed via GetTree()->GetListOfFriends()
39 // (and not directly GetListOfFriends()), otherwise when `main` is a TChain we
40 // might not recover the list correctly (see #6993 for the TTreeReader issue
41 // and #6741 for a more complete discussion/explanation).
42 if (main && main->GetTree()->GetListOfFriends()) {
43 TObject *obj = main->GetTree()->GetListOfFriends()->At(fIndex);
44 TFriendElement *element = dynamic_cast<TFriendElement*>( obj );
45 if (element) fDirector.SetTree(element->GetTree());
46 }
47 director->Attach(this);
48 }
49
50 /////////////////////////////////////////////////////////////////////////////
51 /// Return the entry number currently being looked at.
52
54 {
55 return fDirector.GetReadEntry();
56 }
57
58 /////////////////////////////////////////////////////////////////////////////
59 /// Refresh the cached read entry number from the original tree.
60
62 {
63 // The 2nd call to GetTree is to insure we get the 'local' tree's entry in the case of a
64 // chain.
66 }
67
68 //////////////////////////////////////////////////////////////////////////////
69 /// Update the address of the underlying tree.
70
72 {
73 if (newmain && newmain->GetTree()->GetListOfFriends()) {
74 TObject *obj = newmain->GetTree()->GetListOfFriends()->At(fIndex);
75 TFriendElement *element = dynamic_cast<TFriendElement*>( obj );
76 if (element) fDirector.SetTree(element->GetTree());
77 else fDirector.SetTree(0);
78 } else {
80 }
81 }
82
83} // namespace Internal
84} // namespace ROOT
int main()
Definition Prototype.cxx:12
long long Long64_t
Definition RtypesCore.h:80
#define ClassImp(name)
Definition Rtypes.h:377
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Long64_t GetReadEntry() const
Return the current 'local' entry number; i.e.
void SetReadEntry(Long64_t entry)
Move to a new entry to read entry is the 'local' entry number; i.e.
TTree * SetTree(TTree *newtree)
Set the BranchProxy to be looking at a new tree.
void Attach(Detail::TBranchProxy *p)
Attach a TBranchProxy object to this director.
Int_t fIndex
Index of this tree in the list of friends.
TBranchProxyDirector fDirector
Contain pointer to TTree and entry to be read.
Long64_t GetReadEntry() const
Return the entry number currently being looked at.
void ResetReadEntry()
Refresh the cached read entry number from the original tree.
void Update(TTree *newmain)
Update the address of the underlying tree.
A TFriendElement TF describes a TTree object TF in a file.
virtual TTree * GetTree()
Return pointer to friend TTree.
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
Definition TList.cxx:357
Mother of all ROOT objects.
Definition TObject.h:41
A TTree represents a columnar dataset.
Definition TTree.h:79
virtual Long64_t GetReadEntry() const
Definition TTree.h:506
virtual TTree * GetTree() const
Definition TTree.h:514
virtual TList * GetListOfFriends() const
Definition TTree.h:487
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.