CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PoolOutputModule.h
Go to the documentation of this file.
1 #ifndef IOPool_Output_PoolOutputModule_h
2 #define IOPool_Output_PoolOutputModule_h
3 
5 //
6 // Class PoolOutputModule. Output module to POOL file
7 //
8 // Oringinal Author: Luca Lista
9 // Current Author: Bill Tanenbaum
10 //
12 
13 #include <string>
14 #include "boost/scoped_ptr.hpp"
15 #include "boost/shared_ptr.hpp"
16 
20 
21 class TTree;
22 namespace edm {
23  class ParameterSet;
24  class RootOutputFile;
26 
27  class PoolOutputModule : public OutputModule {
28  public:
30  explicit PoolOutputModule(ParameterSet const& ps);
31  virtual ~PoolOutputModule();
32  std::string const& fileName() const {return fileName_;}
33  std::string const& logicalFileName() const {return logicalFileName_;}
34  int const& compressionLevel() const {return compressionLevel_;}
35  int const& basketSize() const {return basketSize_;}
36  int const eventAutoFlushSize() const {return eventAutoFlushSize_;}
37  int const& splitLevel() const {return splitLevel_;}
38  std::string const& basketOrder() const {return basketOrder_;}
39  int const& treeMaxVirtualSize() const {return treeMaxVirtualSize_;}
41  DropMetaData const& dropMetaData() const {return dropMetaData_;}
42  std::string const& catalog() const {return catalog_;}
43  std::string const& moduleLabel() const {return moduleLabel_;}
44  unsigned int const& maxFileSize() const {return maxFileSize_;}
45  int const& inputFileCount() const {return inputFileCount_;}
46  int const& whyNotFastClonable() const {return whyNotFastClonable_;}
47 
48  std::string const& currentFileName() const;
49 
50  static void fillDescriptions(ConfigurationDescriptions& descriptions);
51 
53 
54  struct AuxItem {
55  AuxItem();
56  ~AuxItem() {}
58  };
59  typedef boost::array<AuxItem, NumBranchTypes> AuxItemArray;
60  AuxItemArray const& auxItems() const {return auxItems_;}
61 
62  struct OutputItem {
63  class Sorter {
64  public:
65  explicit Sorter(TTree* tree);
66  bool operator() (OutputItem const& lh, OutputItem const& rh) const;
67  private:
68  boost::shared_ptr<std::map<std::string, int> > treeMap_;
69  };
70 
71  OutputItem();
72 
73  explicit OutputItem(BranchDescription const* bd, int splitLevel, int basketSize);
74 
76 
78  std::string const& branchName() const { return branchDescription_->branchName(); }
79 
80  bool operator <(OutputItem const& rh) const {
82  }
83 
85  mutable void const* product_;
88  };
89 
90  typedef std::vector<OutputItem> OutputItemList;
91 
92  typedef boost::array<OutputItemList, NumBranchTypes> OutputItemListArray;
93 
95 
96  protected:
98  virtual bool shouldWeCloseFile() const;
99  virtual void write(EventPrincipal const& e);
100  private:
101  virtual void openFile(FileBlock const& fb);
102  virtual void respondToOpenInputFile(FileBlock const& fb);
103  virtual void respondToCloseInputFile(FileBlock const& fb);
104  virtual void writeLuminosityBlock(LuminosityBlockPrincipal const& lb);
105  virtual void writeRun(RunPrincipal const& r);
106  virtual void postForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);
107  virtual bool isFileOpen() const;
108  virtual void doOpenFile();
109 
110 
111  virtual void startEndFile();
112  virtual void writeFileFormatVersion();
113  virtual void writeFileIdentifier();
114  virtual void writeIndexIntoFile();
115  virtual void writeProcessConfigurationRegistry();
116  virtual void writeProcessHistoryRegistry();
117  virtual void writeParameterSetRegistry();
118  virtual void writeProductDescriptionRegistry();
119  virtual void writeParentageRegistry();
120  virtual void writeBranchIDListRegistry();
121  virtual void writeProductDependencies();
122  virtual void finishEndFile();
123 
124  void fillSelectedItemList(BranchType branchtype, TTree* theInputTree);
125  void beginInputFile(FileBlock const& fb);
126 
130  std::string const fileName_;
131  std::string const logicalFileName_;
132  std::string const catalog_;
133  unsigned int const maxFileSize_;
134  int const compressionLevel_;
135  int const basketSize_;
137  int const splitLevel_;
138  std::string basketOrder_;
142  std::string const moduleLabel_;
146  unsigned int childIndex_;
149  boost::scoped_ptr<RootOutputFile> rootOutputFile_;
150  std::string statusFileName_;
151  };
152 }
153 
154 #endif
virtual void writeParentageRegistry()
BranchDescription const * branchDescription_
int const & basketSize() const
bool const & overrideInputFileSplitLevels() const
std::string const & catalog() const
std::string & branchName() const
std::string const catalog_
std::string const & moduleLabel() const
DropMetaData const & dropMetaData() const
virtual bool isFileOpen() const
std::vector< OutputItem > OutputItemList
std::string const & fileName() const
int const & compressionLevel() const
OutputItemListArray const & selectedOutputItemList() const
std::string const moduleLabel_
virtual void write(EventPrincipal const &e)
bool int lh
Definition: SSEVec.h:37
unsigned int const & maxFileSize() const
virtual bool shouldWeCloseFile() const
allow inheriting classes to override but still be able to call this method in the overridden version ...
std::string const & logicalFileName() const
virtual void writeParameterSetRegistry()
BranchType
Definition: BranchType.h:11
boost::scoped_ptr< RootOutputFile > rootOutputFile_
void fillSelectedItemList(BranchType branchtype, TTree *theInputTree)
boost::array< OutputItemList, NumBranchTypes > OutputItemListArray
PoolOutputModule(ParameterSet const &ps)
virtual void respondToOpenInputFile(FileBlock const &fb)
virtual void respondToCloseInputFile(FileBlock const &fb)
bool operator()(OutputItem const &lh, OutputItem const &rh) const
std::string const & currentFileName() const
bool operator<(OutputItem const &rh) const
virtual void writeFileFormatVersion()
virtual void writeLuminosityBlock(LuminosityBlockPrincipal const &lb)
OutputItemListArray selectedOutputItemList_
std::string const & basketOrder() const
std::string const & branchName() const
virtual void writeProcessConfigurationRegistry()
int const & splitLevel() const
BranchID const & branchID() const
virtual void writeProductDependencies()
int const & whyNotFastClonable() const
virtual void writeIndexIntoFile()
unsigned int numberOfDigitsInIndex_
boost::array< AuxItem, NumBranchTypes > AuxItemArray
unsigned int const maxFileSize_
virtual void writeBranchIDListRegistry()
int const eventAutoFlushSize() const
virtual void writeProcessHistoryRegistry()
virtual void openFile(FileBlock const &fb)
virtual void postForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren)
AuxItemArray const & auxItems() const
std::string const fileName_
int const & treeMaxVirtualSize() const
virtual void writeFileIdentifier()
virtual void finishEndFile()
std::string const logicalFileName_
void beginInputFile(FileBlock const &fb)
virtual void startEndFile()
virtual void writeProductDescriptionRegistry()
boost::shared_ptr< std::map< std::string, int > > treeMap_
static void fillDescriptions(ConfigurationDescriptions &descriptions)
RootServiceChecker rootServiceChecker_
virtual void writeRun(RunPrincipal const &r)
int const & inputFileCount() const
ParameterSetID selectorConfig() const
Definition: OutputModule.h:84