Logo ROOT  
Reference Guide
TBranchProxyDirector.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/** TBranchProxyDirector
13This class is used to 'drive' and hold a serie of TBranchProxy objects
14which represent and give access to the content of TTree object.
15This is intended to be used as part of a generate Selector class
16which will hold the directory and its associate
17*/
18
20#include "TBranchProxy.h"
21#include "TFriendProxy.h"
22#include "TTree.h"
23#include "TEnv.h"
24#include "TH1F.h"
25#include "TVirtualPad.h"
26#include "TList.h"
27
28#include <algorithm>
29
31
32namespace ROOT {
33namespace Internal {
34
35 // Helper function to call Reset on each TBranchProxy
36 void NotifyDirected(Detail::TBranchProxy *x) { x->Notify(); }
37
38 // Helper function to call SetReadEntry on all TFriendProxy
40
41 // Helper class to call Update on all TFriendProxy
42 struct Update {
43 Update(TTree *newtree) : fNewTree(newtree) {}
44 TTree *fNewTree;
45 void operator()(TFriendProxy *x) { x->Update(fNewTree); }
46 };
47
48
50 fTree(tree),
51 fEntry(i)
52 {
53 // Simple constructor
54 }
55
57 // cint has a problem casting int to long long
58 fTree(tree),
59 fEntry(i)
60 {
61 // Simple constructor
62 }
63
65
66 // Attach a TBranchProxy object to this director. The director just
67 // 'remembers' this BranchProxy and does not own it. It will be use
68 // to apply Tree wide operation (like reseting).
69 fDirected.push_back(p);
70 }
71
73
74 // Attach a TFriendProxy object to this director. The director just
75 // 'remembers' this BranchProxy and does not own it. It will be use
76 // to apply Tree wide operation (like reseting).
77 fFriends.push_back(p);
78 }
79
81 // Create a temporary 1D histogram.
82
83 Int_t nbins = gEnv->GetValue("Hist.Binning.1D.x",100);
84 Double_t vmin=0, vmax=0;
85 Double_t xmin=0, xmax=0;
86 Bool_t canExtend = kTRUE;
87 TString opt( options );
88 Bool_t optSame = opt.Contains("same");
89 if (optSame) canExtend = kFALSE;
90
91 if (gPad && optSame) {
92 TListIter np(gPad->GetListOfPrimitives());
93 TObject *op;
94 TH1 *oldhtemp = 0;
95 while ((op = np()) && !oldhtemp) {
96 if (op->InheritsFrom(TH1::Class())) oldhtemp = (TH1 *)op;
97 }
98 if (oldhtemp) {
99 nbins = oldhtemp->GetXaxis()->GetNbins();
100 vmin = oldhtemp->GetXaxis()->GetXmin();
101 vmax = oldhtemp->GetXaxis()->GetXmax();
102 } else {
103 vmin = gPad->GetUxmin();
104 vmax = gPad->GetUxmax();
105 }
106 } else {
107 vmin = xmin;
108 vmax = xmax;
109 if (xmin < xmax) canExtend = kFALSE;
110 }
111 TH1F *hist = new TH1F("htemp","htemp",nbins,vmin,vmax);
120 if (canExtend) hist->SetCanExtend(TH1::kAllAxes);
121 hist->GetXaxis()->SetTitle("var");
122 hist->SetBit(kCanDelete);
123 hist->SetDirectory(0);
124
125 if (opt.Length() && opt.Contains("e")) hist->Sumw2();
126 return hist;
127 }
128
130
131 // Set the BranchProxy to be looking at a new tree.
132 // Reset all.
133 // Return the old tree.
134
135 TTree* oldtree = fTree;
136 fTree = newtree;
137 if(!Notify()) return nullptr;
138 return oldtree;
139 }
140
142 fEntry = -1;
143 bool retVal = true;
144 for_each(fDirected.begin(),fDirected.end(),NotifyDirected);
145 for (auto brProxy : fDirected) {
146 retVal = retVal && brProxy->Notify();
147 }
148 Update update(fTree);
149 for_each(fFriends.begin(),fFriends.end(),update);
150 return retVal;
151 }
152
153} // namespace Internal
154} // namespace ROOT
void Class()
Definition: Class.C:29
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
const Bool_t kFALSE
Definition: RtypesCore.h:90
double Double_t
Definition: RtypesCore.h:57
long long Long64_t
Definition: RtypesCore.h:71
const Bool_t kTRUE
Definition: RtypesCore.h:89
#define ClassImp(name)
Definition: Rtypes.h:361
R__EXTERN TEnv * gEnv
Definition: TEnv.h:171
float xmin
Definition: THbookFile.cxx:93
float xmax
Definition: THbookFile.cxx:93
@ kCanDelete
Definition: TObject.h:354
TRObject operator()(const T1 &t1) const
#define gPad
Definition: TVirtualPad.h:287
Base class for all the proxy object.
Definition: TBranchProxy.h:68
void Attach(Detail::TBranchProxy *p)
std::list< Detail::TBranchProxy * > fDirected
std::vector< TFriendProxy * > fFriends
TBranchProxyDirector(const TBranchProxyDirector &)
TH1F * CreateHistogram(const char *options)
void ResetReadEntry()
Refresh the cached read entry number from the original tree.
virtual Color_t GetFillColor() const
Return the fill area color.
Definition: TAttFill.h:30
virtual Style_t GetFillStyle() const
Return the fill area style.
Definition: TAttFill.h:31
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Definition: TAttFill.h:39
virtual Color_t GetLineColor() const
Return the line color.
Definition: TAttLine.h:33
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Definition: TAttLine.h:42
virtual Width_t GetLineWidth() const
Return the line width.
Definition: TAttLine.h:35
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Definition: TAttLine.h:43
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition: TAttLine.h:40
virtual Style_t GetLineStyle() const
Return the line style.
Definition: TAttLine.h:34
virtual Style_t GetMarkerStyle() const
Return the marker style.
Definition: TAttMarker.h:32
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
Definition: TAttMarker.h:38
virtual Color_t GetMarkerColor() const
Return the marker color.
Definition: TAttMarker.h:31
virtual Size_t GetMarkerSize() const
Return the marker size.
Definition: TAttMarker.h:33
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Definition: TAttMarker.h:40
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Definition: TAttMarker.h:41
Double_t GetXmax() const
Definition: TAxis.h:134
Double_t GetXmin() const
Definition: TAxis.h:133
Int_t GetNbins() const
Definition: TAxis.h:121
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
Definition: TEnv.cxx:491
1-D histogram with a float per channel (see TH1 documentation)}
Definition: TH1.h:571
The TH1 histogram class.
Definition: TH1.h:56
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
Definition: TH1.cxx:8393
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
Definition: TH1.h:316
@ kAllAxes
Definition: TH1.h:73
virtual UInt_t SetCanExtend(UInt_t extendBitMask)
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bi...
Definition: TH1.cxx:6291
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
Definition: TH1.cxx:8476
Iterator of linked list.
Definition: TList.h:200
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Definition: TNamed.cxx:164
Mother of all ROOT objects.
Definition: TObject.h:37
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:694
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition: TObject.cxx:443
Basic string class.
Definition: TString.h:131
Ssiz_t Length() const
Definition: TString.h:405
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Definition: TString.h:619
A TTree represents a columnar dataset.
Definition: TTree.h:78
Double_t x[n]
Definition: legend1.C:17
void ResetReadEntry(TFriendProxy *fp)
void NotifyDirected(Detail::TBranchProxy *x)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: StringConv.hxx:21
Definition: tree.py:1