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 };