00001 00002 #include "art/Framework/Core/OutputModule.h" 00003 #include "art/Framework/Principal/EventPrincipal.h" 00004 #include "art/Framework/Principal/OutputHandle.h" 00005 #include "art/Framework/Principal/RunPrincipal.h" 00006 #include "art/Framework/Principal/SubRunPrincipal.h" 00007 #include <TBufferFile.h> 00008 00009 namespace art 00010 { 00011 class RootNetOutput; 00012 } 00013 00014 00020 class art::RootNetOutput : public OutputModule 00021 { 00022 public: 00030 explicit RootNetOutput(fhicl::ParameterSet const& ps); 00031 00035 ~RootNetOutput(); 00036 00037 private: 00038 virtual void openFile(FileBlock const&); 00039 00040 virtual void closeFile(); 00041 00042 virtual void respondToCloseInputFile(FileBlock const&); 00043 00044 virtual void respondToCloseOutputFiles(FileBlock const&); 00045 00046 virtual void endJob(); 00047 00048 virtual void write(EventPrincipal&); 00049 00050 virtual void writeRun(RunPrincipal&); 00051 00052 virtual void writeSubRun(SubRunPrincipal&); 00053 00054 void writeDataProducts(TBufferFile&, const Principal&, std::vector<BranchKey*>&); 00055 00056 private: 00057 bool initMsgSent_; 00058 };