142 T->SetPerfStats(
this);
143 fNleaves= T->GetListOfLeaves()->GetEntries();
144 fFile = T->GetCurrentFile();
169 fCompress = (T->GetTotBytes()+0.00001)/T->GetZipBytes();
219 const Int_t kMaxDiff = 7;
224 if (py < puymax)
return 9999;
227 if (distance <kMaxDiff) {
if (px > puxmin && py < puymin)
gPad->SetSelected(
fGraphIO);
return distance;}
230 if (distance <kMaxDiff) {
if (px > puxmin && py < puymin)
gPad->SetSelected(
fGraphTime);
return distance;}
233 if (distance <kMaxDiff) {
gPad->SetSelected(
fPave);
return distance;}
240 if (px > puxmax-300)
return 2;
255 if (strlen(
option)==0) opt =
"al";
258 if (!
gPad->IsEditable())
gROOT->MakeDefCanvas();
263 gROOT->MakeDefCanvas();
266 gPad->SetLeftMargin(0.35);
288 if (file == this->
fFile) {
345 if (!npoints)
return;
350 for (
Int_t i=1;i<npoints;i++) {
364 for (
int i = 0; i < branches->
GetEntries(); ++i) {
389 for (
Int_t i = 0; i < branches->GetEntries(); ++i) {
390 if (br == branches->UncheckedAt(i)) {
399 index = iter->second;
414 if (brvec.size() <= basketNumber)
415 brvec.resize(basketNumber + 1);
417 return brvec[basketNumber];
441 if ((info.fLoaded + info.fLoadedMiss) > 1) {
443 result.emplace_back(BasketList_t::value_type((
TBranch*)branches->At(i), std::vector<size_t>(1)));
446 auto &ref(
result.back() );
447 ref.second.push_back(j);
461 if (!npoints)
return;
464 if (iomax >= 1e9) toffset = 1.2;
474 bool unzip = opts.
Contains(
"unzip");
544 bool unzip = opts.
Contains(
"unzip");
545 bool basket = opts.
Contains(
"basket");
557 printf(
"Readextra = %5.2f per cent\n",extra);
558 printf(
"Real Time = %7.3f seconds\n",
fRealTime);
559 printf(
"CPU Time = %7.3f seconds\n",
fCpuTime);
560 printf(
"Disk Time = %7.3f seconds\n",
fDiskTime);
563 printf(
"UnzipTime = %7.3f seconds\n",
fUnzipTime);
586 bool all = opts.
Contains(
"allbasketinfo");
598 const char *branchname = branches->
At(i)->
GetName();
600 printf(
" br=%zu %s read not cached: ", i, branchname);
610 printf(
" br=%zu %s cached more than once: ", i, branchname);
613 if ((info.fLoaded + info.fLoadedMiss) > 1)
614 printf(
"%zu[%d,%d] ", j, info.fLoaded, info.fLoadedMiss);
618 printf(
" br=%zu %s cached but not used: ", i, branchname);
621 if ((info.fLoaded + info.fLoadedMiss) && !info.fUsed) {
622 if (info.fLoadedMiss)
623 printf(
"%zu[%d,%d] ", j, info.fLoaded, info.fLoadedMiss);
631 printf(
" br=%zu %s: ", i, branchname);
634 printf(
"%zu[%d,%d,%d,%d] ", j, info.fUsed, info.fLoaded, info.fLoadedMiss, info.fMissed);
640 printf(
" br=%d %s: no basket information\n", i, branches->At(i)->GetName());
664 out<<
" TTreePerfStats *";
666 out<<
"ps = new TTreePerfStats();"<<std::endl;
667 out<<
" ps->SetName("<<quote<<
GetName()<<quote<<
");"<<std::endl;
668 out<<
" ps->SetHostInfo("<<quote<<
GetHostInfo()<<quote<<
");"<<std::endl;
670 out<<
" ps->SetNleaves("<<
fNleaves<<
");"<<std::endl;
671 out<<
" ps->SetReadCalls("<<
fReadCalls<<
");"<<std::endl;
673 out<<
" ps->SetBytesRead("<<
fBytesRead<<
");"<<std::endl;
675 out<<
" ps->SetRealNorm("<<
fRealNorm<<
");"<<std::endl;
676 out<<
" ps->SetRealTime("<<
fRealTime<<
");"<<std::endl;
677 out<<
" ps->SetCpuTime("<<
fCpuTime<<
");"<<std::endl;
678 out<<
" ps->SetDiskTime("<<
fDiskTime<<
");"<<std::endl;
679 out<<
" ps->SetUnzipTime("<<
fUnzipTime<<
");"<<std::endl;
680 out<<
" ps->SetCompress("<<
fCompress<<
");"<<std::endl;
683 out<<
" TGraphErrors *psGraphIO = new TGraphErrors("<<npoints<<
");"<<std::endl;
684 out<<
" psGraphIO->SetName("<<quote<<
fGraphIO->
GetName()<<quote<<
");"<<std::endl;
685 out<<
" psGraphIO->SetTitle("<<quote<<
fGraphIO->
GetTitle()<<quote<<
");"<<std::endl;
686 out<<
" ps->SetGraphIO(psGraphIO);"<<std::endl;
690 for (i=0;i<npoints;i++) {
692 out<<
" psGraphIO->SetPointError("<<i<<
",0,"<<
fGraphIO->
GetEY()[i]<<
");"<<std::endl;
695 out<<
" TGraphErrors *psGraphTime = new TGraphErrors("<<npoints<<
");"<<std::endl;
696 out<<
" psGraphTime->SetName("<<quote<<
fGraphTime->
GetName()<<quote<<
");"<<std::endl;
697 out<<
" psGraphTime->SetTitle("<<quote<<
fGraphTime->
GetTitle()<<quote<<
");"<<std::endl;
698 out<<
" ps->SetGraphTime(psGraphTime);"<<std::endl;
702 for (i=0;i<npoints;i++) {
704 out<<
" psGraphTime->SetPointError("<<i<<
",0,"<<
fGraphTime->
GetEY()[i]<<
");"<<std::endl;
707 out<<
" ps->Draw("<<quote<<
option<<quote<<
");"<<std::endl;
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
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
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
R__EXTERN TSystem * gSystem
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
virtual void SetLabelSize(Float_t size=0.04)
Set size of axis labels.
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
virtual void SaveMarkerAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t sizdef=1)
Save line attributes as C++ statement(s) on output stream out.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
A TTree is a list of TBranches.
Using a TBrowser one can browse all ROOT objects.
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
const char * AsString() const
Return the date & time as a string (ctime() format).
virtual TFile * GetFile() const
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
static Int_t GetReadaheadSize()
Static function returning the readahead buffer size.
Long64_t GetRelOffset() const
virtual Long64_t GetBytesReadExtra() const
TFileCacheRead * GetCacheRead(const TObject *tree=nullptr) const
Return a pointer to the current read cache.
void SetTitleOffset(Float_t titleoffset=1)
virtual void SetTitle(const char *title="")
Change the title of the axis.
void SetLabelColor(Int_t labelcolor)
void SetTitleColor(Int_t titlecolor)
void Paint(Option_t *chopt="") override
Draw this axis with its current attributes.
void SetLabelSize(Float_t labelsize)
virtual void SetName(const char *name)
Change the name of the axis.
A TGraphErrors is a TGraph with error bars.
virtual void SetPointError(Double_t ex, Double_t ey)
Set ex and ey values for point pointed by the mouse.
Double_t * GetEY() const override
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set x and y values for point number i.
void Paint(Option_t *chopt="") override
Draw this graph with its current attributes.
void SetName(const char *name="") override
Set graph name.
TAxis * GetXaxis() const
Get x axis of the graph.
TAxis * GetYaxis() const
Get y axis of the graph.
void SetTitle(const char *title="") override
Change (i.e.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a graph.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a line.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
@ kCanDelete
if object in a list can be deleted
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
void Paint(Option_t *option="") override
Paint this pavetext with its current attributes.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a pave.
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
Double_t CpuTime()
Stop the stopwatch (if it is running) and return the cputime (in seconds) passed between the start an...
void ToLower()
Change string to lower-case.
const char * Data() const
void Resize(Ssiz_t n)
Resize the string. Truncate or add blanks as necessary.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual TString GetFromPipe(const char *command)
Execute command and return output in TString.
Base class for several text objects.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a string.
void Paint(Option_t *option="") override
Paint this text with its current attributes.
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
The TTimeStamp encapsulates seconds and ns since EPOCH.
A cache to speed-up the reading of ROOT datasets.
const TObjArray * GetCachedBranches() const
TTree I/O performance measurement.
TGraphErrors * fGraphIO
Pointer to the graph with IO data.
Long64_t fUnzipInputSize
Compressed bytes seen by the decompressor.
TString fName
Name of this TTreePerfStats.
Int_t fNleaves
Number of leaves in the tree.
void Browse(TBrowser *b) override
Browse.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Return distance to one of the objects in the TTreePerfStats.
Double_t fRealNorm
Real time scale factor for fGraphTime.
BasketInfo & GetBasketInfo(TBranch *b, size_t basketNumber)
Return the BasketInfo corresponding to the given branch and basket.
std::vector< std::vector< BasketInfo > > fBasketsInfo
Long64_t fUnzipObjSize
Uncompressed bytes produced by the decompressor.
TStopwatch * fWatch
TStopwatch pointer.
TTree * fTree
! Pointer to the Tree being monitored
TString fHostInfo
Name of the host system, ROOT version and date.
void Print(Option_t *option="") const override
Print the TTree I/O perf stats.
Int_t fReadCalls
Number of read calls.
Long64_t fBytesRead
Number of bytes read.
void UpdateBranchIndices(TObjArray *branchNames) override
Update the fBranchIndexCache collection to match the current TTree given the ordered list of branch n...
BasketList_t GetDuplicateBasketCache() const
Return the collection of baskets which have been read by the TTreeCache more than once.
Double_t fCpuTime
Cpu time.
virtual void Finish()
When the run is finished this function must be called to save the current parameters in the file and ...
const char * GetName() const override
Returns name of object.
void Paint(Option_t *chopt="") override
Draw the TTree I/O perf graph.
void SaveAs(const char *filename="", Option_t *option="") const override
Save this object to filename.
void FileReadEvent(TFile *file, Int_t len, Double_t start) override
Record TTree file read event.
Double_t fCompress
Tree compression factor.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save primitive as a C++ statement(s) on output stream out.
void PrintBasketInfo(Option_t *option="") const override
Print the TTree basket information.
void Draw(Option_t *option="") override
Draw the TTree I/O perf graph.
TFile * fFile
! Pointer to the file containing the Tree
const char * GetHostInfo() const
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Return distance to one of the objects in the TTreePerfStats.
Double_t fRealTime
Real time.
Int_t fReadaheadSize
Read-ahead cache size.
std::unordered_map< TBranch *, size_t > fBranchIndexCache
~TTreePerfStats() override
Destructor.
Double_t fDiskTime
Time spent in pure raw disk IO.
TGaxis * fRealTimeAxis
Pointer to TGaxis object showing real-time.
Double_t fUnzipTime
Time spent uncompressing the data.
std::vector< std::pair< TBranch *, std::vector< size_t > > > BasketList_t
TPaveText * fPave
Pointer to annotation pavetext.
Int_t fTreeCacheSize
TTreeCache buffer size.
TGraphErrors * fGraphTime
Pointer to the graph with timestamp info.
TText * fHostInfoText
Graphics Text object with the fHostInfo data.
Long64_t fBytesReadExtra
Number of bytes (overhead) of the read-ahead cache.
void UnzipEvent(TObject *tree, Long64_t pos, Double_t start, Int_t complen, Int_t objlen) override
Record TTree unzip event.
TTreePerfStats()
default constructor (used when reading an object only)
A TTree represents a columnar dataset.
TFile * GetCurrentFile() const
Return pointer to the current file.
TDirectory * GetDirectory() const
virtual Long64_t GetReadEntry() const
virtual TTree * GetTree() const
TClass * IsA() const override
virtual Long64_t GetCacheSize() const
Provides the interface for the PROOF internal performance measurement and event tracing.
T MaxElement(Long64_t n, const T *a)
Returns maximum of array a of length n.