001 #ifndef HEPROOTFILEMANAGER_H
002 #define HEPROOTFILEMANAGER_H
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037 #ifndef ZMENVIRONMENT_H
038 #include "ZMutility/ZMenvironment.h"
039 #endif
040
041 #include <string>
042
043 #include "HepTuple/HepFileManager.h"
044
045 #ifndef FIXEDTYPES_H
046 #include "ZMutility/FixedTypes.h"
047 #endif
048
049 ZM_BEGIN_NAMESPACE( zmht )
050
051 class HepHist;
052 class HepRootHist1D;
053 class HepRootHist2D;
054 class HepRootHistProf;
055 class HepRootNtuple;
056 class HepFileSwitch;
057
058 class TFile;
059 class TDirectory;
060 class TObject;
061
062 class HepRootFileManager : public HepFileManager {
063
064 friend class HepTFile;
065
066 public:
067
068
069
070 HepRootFileManager(
071 const std::string& fName
072 , const std::string& rootDir = ""
073 , int compression = 0
074 );
075
076 HepRootFileManager(
077 const std::string& fName
078 , HepFileManager::mode req_mode
079 , const std::string& rootDir = ""
080 , int compression = 0
081 );
082
083 virtual ~HepRootFileManager();
084
085 static void initialiseRoot();
086
087
088
089 virtual void cd( const std::string & path = "" );
090
091 virtual void mkdir( const std::string & path );
092
093 virtual std::string ls(
094 const std::string & path = ""
095 , const std::string & opts = ""
096 ) const;
097
098 virtual void rmdir( const std::string & path, bool recursive = false );
099
100
101 virtual void rm( int hid = 0 );
102 virtual void rm( const std::string & what );
103
104 virtual TFile* file() const;
105
106
107
108 HepTupleFileFormat hepFileFormat() const;
109
110
111
112 virtual void writeDirectory();
113 virtual int write();
114 #ifdef LATER
115 virtual void dumpAllData();
116 virtual void clearAllData();
117 #endif
118
119
120
121
122 virtual HepHist1D & hist1D(
123 const std::string& title,
124 const int nBins, const float low, const float high,
125 const int id = 0
126 );
127 virtual HepHist2D & hist2D(
128 const std::string& title,
129 const int nBinsX, const float lowX, const float highX,
130 const int nBinsY, const float lowY, const float highY,
131 const int id = 0
132 );
133 virtual HepHistProf & histProf(
134 const std::string& title,
135 const int nBinsX, const float lowX, const float highX,
136 const float lowY, const float highY, const std::string& chopt,
137 const int id = 0
138 );
139 virtual HepHistProf & histProf(
140 const std::string& title,
141 const int nBinsX, const float lowX, const float highX,
142 const float lowY, const float highY,
143 const int id = 0
144 );
145 virtual HepNtuple & ntuple(
146 const std::string& title,
147 const int hid = 0
148 );
149
150
151 virtual HepHist1D & retrieveHist1D(
152 const std::string& title,
153 const int hid = 0
154 );
155 virtual HepHist2D & retrieveHist2D(
156 const std::string& title,
157 const int hid = 0
158 );
159 virtual HepHistProf & retrieveHistProf(
160 const std::string& title,
161 const int hid = 0
162 );
163 virtual HepNtuple & retrieveNtuple(
164 const std::string& title,
165 const int hid = 0
166 );
167
168
169 virtual void release( HepObj & me );
170
171
172
173 static HepRootNtuple& deadRootNtuple() ;
174 static HepRootHist1D& deadRootHist1D() ;
175 static HepRootHist2D& deadRootHist2D() ;
176 static HepRootHistProf& deadRootHistProf() ;
177
178
179
180 virtual bool switchFile( const std::string& newFileName,
181 const bool resetHists );
182
183
184
185
186 virtual bool switchFile( const std::string& newFileName,
187 const bool resetHists,
188 HepFileSwitch& userHandler );
189
190 protected:
191 void init(
192 const std::string& fName
193 , HepFileManager::mode req_mode
194 , const std::string& rootDir
195 , int compression
196 );
197
198 static bool init_done;
199 void retrieveExistingItems();
200
201 virtual void writeOne( HepObj * o );
202
203
204
205 std::string inFileRootPath( const std::string& path ) const;
206 const std::string& CurrentRootPath() const;
207
208
209 virtual HepNtuple& deadNtuple() const;
210 virtual HepHist1D& deadHist1D() const;
211 virtual HepHist2D& deadHist2D() const;
212 virtual HepHistProf& deadHistProf() const;
213
214 bool cloneDir( TDirectory* oldFile, TDirectory* newFile,
215 std::vector<void*>& strays, bool resetHists );
216
217 TFile * filep_;
218
219 private:
220
221 Int4 compression_;
222 Int4 writeOption_;
223
224 };
225
226
227 ZM_END_NAMESPACE( zmht )
228
229
230 #endif
231
Send problems or questions to cdfcode@fnal.gov