SusyNtuple
|
00001 // Dear emacs, this is -*- c++ -*- 00002 // $Id$ 00003 #ifndef D3PDREADER_D3PDREADSTATS_H 00004 #define D3PDREADER_D3PDREADSTATS_H 00005 00006 // STL include(s): 00007 #include <map> 00008 #include <vector> 00009 00010 // ROOT include(s): 00011 #include <TNamed.h> 00012 #include <TString.h> 00013 00014 // Forward declaration(s): 00015 class TCollection; 00016 class TTree; 00017 class TH1; 00018 00019 namespace D3PDReader { 00020 00021 // Forward declaration(s): 00022 class D3PDPerfStats; 00023 00035 class VariableStats : public ::TNamed { 00036 00037 public: 00039 VariableStats( const char* name = "d3pd_variable", 00040 const char* type = "Int_t", 00041 ::Int_t nTreesAccessed = 0, ::Long64_t nReadEntries = 0, 00042 ::Long64_t nUnzippedBytes = 0, ::Long64_t nZippedBytes = 0 ); 00044 VariableStats( const VariableStats& parent ); 00045 00047 VariableStats& operator= ( const VariableStats& parent ); 00048 00050 ::Int_t GetTreesAccessed() const; 00052 void SetTreesAccessed( ::Int_t nTreesAccessed ); 00053 00055 ::Long64_t GetReadEntries() const; 00057 void SetReadEntries( ::Long64_t nReadEntries ); 00058 00060 ::Long64_t GetUnzippedBytesRead() const; 00062 void SetUnzippedBytesRead( ::Long64_t nUnzippedBytes ); 00063 00065 ::Long64_t GetZippedBytesRead() const; 00067 void SetZippedBytesRead( ::Long64_t nZippedBytes ); 00068 00070 VariableStats& Add( const VariableStats& rh ); 00072 VariableStats& operator+= ( const VariableStats& rh ); 00073 00075 ::Int_t Merge( ::TCollection* coll ); 00076 00078 void Print( ::Option_t* option = "" ) const; 00079 00080 private: 00081 ::Int_t fTreesAccessed; 00082 ::Long64_t fReadEntries; 00083 ::Long64_t fUnzippedBytes; 00084 ::Long64_t fZippedBytes; 00085 00086 ClassDef( VariableStats, 2 ) 00087 00088 }; // class VariableStats 00089 00102 class D3PDReadStats : public ::TNamed { 00103 00104 public: 00106 00111 typedef std::map< ::TString, VariableStats > Map_t; 00112 00114 D3PDReadStats( const char* name = "D3PDReadStats", 00115 const char* title = "D3PD reading statistics" ); 00117 D3PDReadStats( const D3PDReadStats& parent ); 00118 00120 D3PDReadStats& operator= ( const D3PDReadStats& parent ); 00121 00123 void Clear( ::Option_t* opt = "" ); 00124 00126 void SetBytesRead( ::Long64_t num ); 00128 ::Long64_t GetBytesRead() const; 00129 00131 void SetVariableNum( ::Int_t num ); 00133 ::Int_t GetVariableNum() const; 00134 00136 void SetFileReads( ::Int_t num ); 00138 ::Int_t GetFileReads() const; 00139 00141 void SetCacheSize( ::Int_t size ); 00143 ::Int_t GetCacheSize() const; 00144 00146 void SetUnzipTime( ::Double_t time ); 00148 ::Double_t GetUnzipTime() const; 00149 00151 void SetProcessTime( ::Double_t time ); 00153 ::Double_t GetProcessTime() const; 00154 00156 D3PDReadStats& AddVariable( const VariableStats& var ); 00158 const VariableStats* GetVariable( const char* name ) const; 00160 const Map_t& GetVariables() const; 00161 00163 ::Bool_t IsCompatible( const D3PDReadStats& rh ) const; 00165 D3PDReadStats& Add( const D3PDReadStats& rh ); 00167 D3PDReadStats& operator+= ( const D3PDReadStats& rh ); 00168 00170 void AddToTreeCache( ::TTree* tree ) const; 00172 void AddToTreeCacheByEntries( ::TTree* tree, ::Long64_t minEntries ) const; 00174 void AddToTreeCacheByEntryFrac( ::TTree* tree, 00175 ::Double_t minEvFraction ) const; 00177 void AddToTreeCacheByBytes( ::TTree* tree, ::Long64_t minBytes ) const; 00179 void AddToTreeCacheByByteFrac( ::TTree* tree, 00180 ::Double_t minByteFraction ) const; 00181 00183 std::vector< TString > GetBranchesByEntries( ::Long64_t minEntries ) const; 00185 std::vector< TString > GetBranchesByEntryFrac( ::Double_t minEvFraction ) const; 00187 std::vector< TString > GetBranchesByBytes( ::Long64_t minBytes ) const; 00189 std::vector< TString > GetBranchesByByteFrac( ::Double_t minByteFraction ) const; 00190 00192 ::TH1* GetTreeAccessStat() const; 00194 ::TH1* GetEntryReadStat() const; 00196 ::TH1* GetZippedByteReadStat() const; 00198 ::TH1* GetUnzippedByteReadStat() const; 00199 00201 ::Int_t Merge( ::TCollection* coll ); 00202 00204 void Print( ::Option_t* option = "" ) const; 00205 00206 private: 00208 Map_t fVariables; 00210 ::Long64_t fBytesRead; 00212 ::Int_t fVariableNum; 00214 ::Int_t fFileReads; 00216 ::Int_t fCacheSize; 00218 ::Double_t fUnzipTime; 00220 ::Double_t fProcessTime; 00221 00222 ClassDef( D3PDReadStats, 2 ) 00223 00224 }; // class D3PDReadStats 00225 00226 } // namespace D3PDReader 00227 00228 #endif // D3PDREADER_D3PDREADSTATS_H