File indexing completed on 2024-04-06 12:11:06
0001 #ifndef IOPool_Streamer_interface_FRDOutputModule_h
0002 #define IOPool_Streamer_interface_FRDOutputModule_h
0003
0004
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0007
0008
0009 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
0010 #include "FWCore/Framework/interface/EventForOutput.h"
0011 #include "FWCore/Framework/interface/LuminosityBlockForOutput.h"
0012 #include "FWCore/Framework/interface/one/OutputModule.h"
0013
0014
0015 class FRDOutputModule : public edm::one::OutputModule<edm::one::WatchLuminosityBlocks> {
0016 public:
0017 explicit FRDOutputModule(edm::ParameterSet const& ps);
0018 ~FRDOutputModule() override;
0019
0020 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0021
0022 private:
0023 void write(edm::EventForOutput const& e) override;
0024
0025
0026 void writeRun(const edm::RunForOutput&) override {}
0027 void writeLuminosityBlock(const edm::LuminosityBlockForOutput&) override {}
0028
0029 void beginLuminosityBlock(edm::LuminosityBlockForOutput const&) override;
0030 void endLuminosityBlock(edm::LuminosityBlockForOutput const&) override;
0031
0032 void finishFileWrite(unsigned int run, int ls);
0033 uint32_t adler32() const { return (adlerb_ << 16) | adlera_; }
0034
0035 const edm::EDGetTokenT<FEDRawDataCollection> token_;
0036
0037 const uint32_t frdVersion_;
0038 const uint32_t frdFileVersion_;
0039 std::string filePrefix_;
0040 std::string fileName_;
0041
0042 int outfd_ = -1;
0043 uint32_t adlera_;
0044 uint32_t adlerb_;
0045
0046 uint32_t perFileEventCount_;
0047 uint64_t perFileSize_;
0048
0049 bool fileWritten_ = false;
0050 };
0051
0052 #endif