CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions
dqm::DQMFileSaverPB Class Reference

#include <DQMFileSaverPB.h>

Inheritance diagram for dqm::DQMFileSaverPB:
dqm::DQMFileSaverBase edm::global::EDAnalyzer< edm::RunCache< NoCache >, edm::LuminosityBlockCache< NoCache > > edm::global::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 DQMFileSaverPB (const edm::ParameterSet &ps)
 
 ~DQMFileSaverPB () override
 
- Public Member Functions inherited from dqm::DQMFileSaverBase
 DQMFileSaverBase (const edm::ParameterSet &ps)
 
 ~DQMFileSaverBase () override
 
- Public Member Functions inherited from edm::global::EDAnalyzer< edm::RunCache< NoCache >, edm::LuminosityBlockCache< NoCache > >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
static boost::property_tree::ptree fillJson (int run, int lumi, const std::string &dataFilePathName, const std::string &transferDestinationStr, const std::string &mergeTypeStr, evf::FastMonitoringService *fms)
 
- Static Public Member Functions inherited from dqm::DQMFileSaverBase
static void fillDescription (edm::ParameterSetDescription &d)
 
- Static Public Member Functions inherited from edm::global::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Protected Member Functions

void initRun () const override
 
void saveLumi (const FileParameters &fp) const override
 
void savePB (DQMStore *store, std::string const &filename, int run, int lumi) const
 
void saveRun (const FileParameters &fp) const override
 
- Protected Member Functions inherited from dqm::DQMFileSaverBase
void analyze (edm::StreamID, const edm::Event &e, const edm::EventSetup &) const final
 
std::shared_ptr< NoCacheglobalBeginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) const final
 
std::shared_ptr< NoCacheglobalBeginRun (const edm::Run &, const edm::EventSetup &) const final
 
void globalEndLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) const final
 
void globalEndRun (const edm::Run &, const edm::EventSetup &) const final
 
void logFileAction (const std::string &msg, const std::string &fileName) const
 
void saveJobReport (const std::string &filename) const
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Protected Attributes

bool fakeFilterUnitMode_
 
std::string mergeType_
 
std::string streamLabel_
 
std::string tag_
 
std::string transferDestination_
 
- Protected Attributes inherited from dqm::DQMFileSaverBase
FileParameters initial_fp_
 
std::mutex initial_fp_lock_
 
int runNumber_
 

Private Member Functions

ulong compressME (const TBufferFile &buffer, int maxOutputSize, char *compression_output) const
 
int getMaxCompressedSize (int bufferSize) const
 

Additional Inherited Members

- Public Types inherited from dqm::DQMFileSaverBase
typedef dqm::legacy::DQMStore DQMStore
 
typedef dqm::legacy::MonitorElement MonitorElement
 
- Public Types inherited from edm::global::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Protected Member Functions inherited from dqm::DQMFileSaverBase
static const std::string filename (const FileParameters &fp, bool useLumi=false)
 

Detailed Description

Definition at line 15 of file DQMFileSaverPB.h.

Constructor & Destructor Documentation

◆ DQMFileSaverPB()

DQMFileSaverPB::DQMFileSaverPB ( const edm::ParameterSet ps)

Definition at line 33 of file DQMFileSaverPB.cc.

33  : DQMFileSaverBase(ps) {
34  fakeFilterUnitMode_ = ps.getUntrackedParameter<bool>("fakeFilterUnitMode", false);
35  streamLabel_ = ps.getUntrackedParameter<std::string>("streamLabel", "streamDQMHistograms");
36  tag_ = ps.getUntrackedParameter<std::string>("tag", "UNKNOWN");
37 
39  mergeType_ = "";
40 
41  // If tag is set we're running in a DQM Live mode.
42  // Snapshot files will be saved for every client, then they will be merged and uploaded to the new DQM GUI.
43  if (tag_ != "UNKNOWN") {
44  streamLabel_ = "DQMLive";
45  }
46 }

References fakeFilterUnitMode_, edm::ParameterSet::getUntrackedParameter(), mergeType_, streamLabel_, AlCaHLTBitMon_QueryRunRegistry::string, tag_, and transferDestination_.

◆ ~DQMFileSaverPB()

DQMFileSaverPB::~DQMFileSaverPB ( )
overridedefault

Member Function Documentation

◆ compressME()

ulong DQMFileSaverPB::compressME ( const TBufferFile &  buffer,
int  maxOutputSize,
char *  compression_output 
) const
private

Definition at line 342 of file DQMFileSaverPB.cc.

342  {
343  z_stream deflateStream;
344  deflateStream.zalloc = Z_NULL;
345  deflateStream.zfree = Z_NULL;
346  deflateStream.opaque = Z_NULL;
347  deflateStream.avail_in = (uInt)buffer.Length() + 1; // size of input, string + terminator
348  deflateStream.next_in = (Bytef*)buffer.Buffer(); // input array
349  deflateStream.avail_out = (uInt)maxOutputSize; // size of output
350  deflateStream.next_out = (Bytef*)compression_output; // output array, result will be placed here
351 
352  // The actual compression
353  deflateInit(&deflateStream, Z_BEST_COMPRESSION);
354  deflate(&deflateStream, Z_FINISH);
355  deflateEnd(&deflateStream);
356 
357  return deflateStream.total_out;
358 }

References edmScanValgrind::buffer.

Referenced by savePB().

◆ fillDescriptions()

void DQMFileSaverPB::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 206 of file DQMFileSaverPB.cc.

206  {
208  desc.setComment("Saves histograms from DQM store, HLT->pb workflow.");
209 
210  desc.addUntracked<bool>("fakeFilterUnitMode", false)->setComment("If set, EvFDaqDirector is emulated and not used.");
211 
212  desc.addUntracked<std::string>("streamLabel", "streamDQMHistograms")->setComment("Label of the stream.");
213 
215 
216  // Changed to use addDefault instead of add here because previously
217  // DQMFileSaverOnline and DQMFileSaverPB both used the module label
218  // "saver" which caused conflicting cfi filenames to be generated.
219  // add could be used if unique module labels were given.
220  descriptions.addDefault(desc);
221 }

References edm::ConfigurationDescriptions::addDefault(), submitPVResolutionJobs::desc, dqm::DQMFileSaverBase::fillDescription(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ fillJson()

boost::property_tree::ptree DQMFileSaverPB::fillJson ( int  run,
int  lumi,
const std::string &  dataFilePathName,
const std::string &  transferDestinationStr,
const std::string &  mergeTypeStr,
evf::FastMonitoringService fms 
)
static

Definition at line 124 of file DQMFileSaverPB.cc.

129  {
130  namespace bpt = boost::property_tree;
131  namespace bfs = std::filesystem;
132 
133  bpt::ptree pt;
134 
135  int hostnameReturn;
136  char host[32];
137  hostnameReturn = gethostname(host, sizeof(host));
138  if (hostnameReturn == -1)
139  throw cms::Exception("fillJson") << "Internal error, cannot get host name";
140 
141  int pid = getpid();
142  std::ostringstream oss_pid;
143  oss_pid << pid;
144 
145  int nProcessed = fms ? (fms->getEventsProcessedForLumi(lumi)) : -1;
146 
147  // Stat the data file: if not there, throw
148  std::string dataFileName;
149  struct stat dataFileStat;
150  dataFileStat.st_size = 0;
151  if (nProcessed) {
152  if (stat(dataFilePathName.c_str(), &dataFileStat) != 0)
153  throw cms::Exception("fillJson") << "Internal error, cannot get data file: " << dataFilePathName;
154  // Extract only the data file name from the full path
155  dataFileName = bfs::path(dataFilePathName).filename().string();
156  }
157  // The availability test of the FastMonitoringService was done in the ctor.
158  bpt::ptree data;
159  bpt::ptree processedEvents, acceptedEvents, errorEvents, bitmask, fileList, fileSize, inputFiles, fileAdler32,
160  transferDestination, mergeType, hltErrorEvents;
161 
162  processedEvents.put("", nProcessed); // Processed events
163  acceptedEvents.put("", nProcessed); // Accepted events, same as processed for our purposes
164 
165  errorEvents.put("", 0); // Error events
166  bitmask.put("", 0); // Bitmask of abs of CMSSW return code
167  fileList.put("", dataFileName); // Data file the information refers to
168  fileSize.put("", dataFileStat.st_size); // Size in bytes of the data file
169  inputFiles.put("", ""); // We do not care about input files!
170  fileAdler32.put("", -1); // placeholder to match output json definition
171  transferDestination.put("", transferDestinationStr); // SM Transfer destination field
172  mergeType.put("", mergeTypeStr); // SM Transfer destination field
173  hltErrorEvents.put("", 0); // Error events
174 
175  data.push_back(std::make_pair("", processedEvents));
176  data.push_back(std::make_pair("", acceptedEvents));
177  data.push_back(std::make_pair("", errorEvents));
178  data.push_back(std::make_pair("", bitmask));
179  data.push_back(std::make_pair("", fileList));
180  data.push_back(std::make_pair("", fileSize));
181  data.push_back(std::make_pair("", inputFiles));
182  data.push_back(std::make_pair("", fileAdler32));
183  data.push_back(std::make_pair("", transferDestination));
184  data.push_back(std::make_pair("", mergeType));
185  data.push_back(std::make_pair("", hltErrorEvents));
186 
187  pt.add_child("data", data);
188 
189  if (fms == nullptr) {
190  pt.put("definition", "/fakeDefinition.jsn");
191  } else {
192  // The availability test of the EvFDaqDirector Service was done in the ctor.
193  bfs::path outJsonDefName{
194  edm::Service<evf::EvFDaqDirector>()->baseRunDir()}; //we assume this file is written bu the EvF Output module
195  outJsonDefName /= (std::string("output_") + oss_pid.str() + std::string(".jsd"));
196  pt.put("definition", outJsonDefName.string());
197  }
198 
199  char sourceInfo[64]; //host and pid information
200  sprintf(sourceInfo, "%s_%d", host, pid);
201  pt.put("source", sourceInfo);
202 
203  return pt;
204 }

References data, Exception, evf::FastMonitoringService::getEventsProcessedForLumi(), query::host, submitPVValidationJobs::inputFiles, castor_dqm_sourceclient_file_cfg::path, DiDispStaMuonMonitor_cfi::pt, edm_modernize_messagelogger::stat, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by saveLumi().

◆ getMaxCompressedSize()

int DQMFileSaverPB::getMaxCompressedSize ( int  bufferSize) const
private

Definition at line 333 of file DQMFileSaverPB.cc.

333  {
334  // When input data is very badly compressable, zlib will add overhead instead of reducing the size.
335  // There is a minor amount of overhead (6 bytes overall and 5 bytes per 16K block) that is taken
336  // into consideration here to find out potential absolute maximum size of the output.
337  int n16kBlocks = (bufferSize + 16383) / 16384; // round up any fraction of a block
338  int maxOutputSize = bufferSize + 6 + (n16kBlocks * 5);
339  return maxOutputSize;
340 }

Referenced by savePB().

◆ initRun()

void DQMFileSaverPB::initRun ( ) const
overrideprotectedvirtual

Reimplemented from dqm::DQMFileSaverBase.

Definition at line 50 of file DQMFileSaverPB.cc.

50  {
51  if (!fakeFilterUnitMode_) {
54  }
55 
56  if (!fakeFilterUnitMode_) {
58  const std::string initFileName = daqDirector->getInitFilePath(streamLabel_);
59  std::ofstream file(initFileName);
60  file.close();
61  }
62 }

References fakeFilterUnitMode_, geometryDiff::file, evf::EvFDaqDirector::getInitFilePath(), mergeType_, evf::MergeTypePB, streamLabel_, AlCaHLTBitMon_QueryRunRegistry::string, and transferDestination_.

◆ saveLumi()

void DQMFileSaverPB::saveLumi ( const FileParameters fp) const
overrideprotectedvirtual

Reimplemented from dqm::DQMFileSaverBase.

Definition at line 64 of file DQMFileSaverPB.cc.

64  {
65  // get from DAQ2 services where to store the files according to their format
66  namespace bpt = boost::property_tree;
67 
68  std::string openJsonFilePathName;
69  std::string jsonFilePathName;
70  std::string openHistoFilePathName;
71  std::string histoFilePathName;
72 
73  evf::FastMonitoringService* fms = nullptr;
75 
76  // create the files names
77  if (fakeFilterUnitMode_) {
78  std::string runDir = fmt::sprintf("%s/run%06d", fp.path_, fp.run_);
79  std::string baseName = "";
80  std::filesystem::create_directories(runDir);
81  // If tag is configured, append it to the name of the resulting file.
82  // This differentiates files saved by different clients.
83  // If tag is not configured, we don't add it at all to keep the old behaviour unchanged.
84  if (tag_ == "UNKNOWN") {
85  baseName = fmt::sprintf("%s/run%06d_ls%04d_%s", runDir, fp.run_, fp.lumi_, streamLabel_);
86  } else {
87  baseName = fmt::sprintf("%s/run%06d_%s_%s", runDir, fp.run_, tag_, streamLabel_);
88  }
89 
90  jsonFilePathName = baseName + ".jsn";
91  openJsonFilePathName = jsonFilePathName + ".open";
92 
93  histoFilePathName = baseName + ".pb";
94  openHistoFilePathName = histoFilePathName + ".open";
95  } else {
96  openJsonFilePathName = edm::Service<evf::EvFDaqDirector>()->getOpenOutputJsonFilePath(fp.lumi_, streamLabel_);
97  jsonFilePathName = edm::Service<evf::EvFDaqDirector>()->getOutputJsonFilePath(fp.lumi_, streamLabel_);
98 
99  openHistoFilePathName =
100  edm::Service<evf::EvFDaqDirector>()->getOpenProtocolBufferHistogramFilePath(fp.lumi_, streamLabel_);
101  histoFilePathName = edm::Service<evf::EvFDaqDirector>()->getProtocolBufferHistogramFilePath(fp.lumi_, streamLabel_);
102 
104  }
105 
106  if (fms ? fms->getEventsProcessedForLumi(fp.lumi_) : true) {
107  // Save the file in the open directory.
108  this->savePB(&*store, openHistoFilePathName, fp.run_, fp.lumi_);
109 
110  // Now move the the data and json files into the output directory.
111  ::rename(openHistoFilePathName.c_str(), histoFilePathName.c_str());
112  }
113 
114  // Write the json file in the open directory.
115  bpt::ptree pt = fillJson(fp.run_, fp.lumi_, histoFilePathName, transferDestination_, mergeType_, fms);
116  write_json(openJsonFilePathName, pt);
117  ::rename(openJsonFilePathName.c_str(), jsonFilePathName.c_str());
118 }

References fakeFilterUnitMode_, fillJson(), personalPlayback::fp, evf::FastMonitoringService::getEventsProcessedForLumi(), mergeType_, DiDispStaMuonMonitor_cfi::pt, savePB(), streamLabel_, AlCaHLTBitMon_QueryRunRegistry::string, tag_, and transferDestination_.

◆ savePB()

void DQMFileSaverPB::savePB ( DQMStore store,
std::string const &  filename,
int  run,
int  lumi 
) const
protected

Definition at line 223 of file DQMFileSaverPB.cc.

223  {
224  using google::protobuf::io::FileOutputStream;
225  using google::protobuf::io::GzipOutputStream;
226  using google::protobuf::io::StringOutputStream;
227 
228  unsigned int nme = 0;
229 
230  dqmstorepb::ROOTFilePB dqmstore_message;
231 
232  // We save all histograms, indifferent of the lumi flag: even tough we save per lumi, this is a *snapshot*.
233  auto mes = store->getAllContents("");
234  for (auto const me : mes) {
235  TBufferFile buffer(TBufferFile::kWrite);
236  if (me->kind() < MonitorElement::Kind::TH1F) {
237  TObjString object(me->tagString().c_str());
238  buffer.WriteObject(&object);
239  } else {
240  buffer.WriteObject(me->getRootObject());
241  }
242  dqmstorepb::ROOTFilePB::Histo& histo = *dqmstore_message.add_histo();
243  histo.set_full_pathname(me->getFullname());
244  uint32_t flags = 0;
245  flags |= (uint32_t)me->kind();
246  if (me->getLumiFlag())
248  if (me->getEfficiencyFlag())
250  histo.set_flags(flags);
251  histo.set_size(buffer.Length());
252 
253  if (tag_ == "UNKNOWN") {
254  histo.set_streamed_histo((void const*)buffer.Buffer(), buffer.Length());
255  } else {
256  // Compress ME blob with zlib
257  int maxOutputSize = this->getMaxCompressedSize(buffer.Length());
258  char compression_output[maxOutputSize];
259  uLong total_out = this->compressME(buffer, maxOutputSize, compression_output);
260  histo.set_streamed_histo(compression_output, total_out);
261  }
262 
263  // Save quality reports
264  for (const auto& qr : me->getQReports()) {
266  // TODO: 64 is likely too short; memory corruption in the old code?
267  char buf[64];
268  std::snprintf(buf, sizeof(buf), "qr=st:%d:%.*g:", qr->getStatus(), DBL_DIG + 2, qr->getQTresult());
269  result = '<' + me->getName() + '.' + qr->getQRName() + '>';
270  result += buf;
271  result += qr->getAlgorithm() + ':' + qr->getMessage();
272  result += "</" + me->getName() + '.' + qr->getQRName() + '>';
273  TObjString str(result.c_str());
274 
275  dqmstorepb::ROOTFilePB::Histo& qr_histo = *dqmstore_message.add_histo();
276  TBufferFile qr_buffer(TBufferFile::kWrite);
277  qr_buffer.WriteObject(&str);
278  qr_histo.set_full_pathname(me->getFullname() + '.' + qr->getQRName());
279  qr_histo.set_flags(static_cast<uint32_t>(MonitorElement::Kind::STRING));
280  qr_histo.set_size(qr_buffer.Length());
281  // qr_histo.set_streamed_histo((void const*)qr_buffer.Buffer(), qr_buffer.Length());
282 
283  if (tag_ == "UNKNOWN") {
284  qr_histo.set_streamed_histo((void const*)qr_buffer.Buffer(), qr_buffer.Length());
285  } else {
286  // Compress ME blob with zlib
287  int maxOutputSize = this->getMaxCompressedSize(qr_buffer.Length());
288  char compression_output[maxOutputSize];
289  uLong total_out = this->compressME(qr_buffer, maxOutputSize, compression_output);
290  qr_histo.set_streamed_histo(compression_output, total_out);
291  }
292  }
293 
294  // Save efficiency tag, if any.
295  // XXX not supported by protobuf files.
296 
297  // Save tag if any.
298  // XXX not supported by protobuf files.
299 
300  // Count saved histograms
301  ++nme;
302  }
303 
304  int filedescriptor =
305  ::open(filename.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
306  FileOutputStream file_stream(filedescriptor);
307  if (tag_ == "UNKNOWN") {
309  options.format = GzipOutputStream::GZIP;
310  options.compression_level = 1;
311  GzipOutputStream gzip_stream(&file_stream, options);
312  dqmstore_message.SerializeToZeroCopyStream(&gzip_stream);
313 
314  // Flush the internal streams
315  gzip_stream.Close();
316  file_stream.Close();
317  } else {
318  // We zlib compressed individual MEs so no need to compress the entire file again.
319  dqmstore_message.SerializeToZeroCopyStream(&file_stream);
320 
321  // Flush the internal stream
322  file_stream.Close();
323  }
324 
325  // Close the file descriptor
326  ::close(filedescriptor);
327 
328  // Maybe make some noise.
329  edm::LogInfo("DQMFileSaverPB") << "savePB: successfully wrote " << nme << " objects "
330  << "into DQM file '" << filename << "'\n";
331 }

References visDQMUpload::buf, edmScanValgrind::buffer, compressME(), DQMNet::DQM_PROP_EFFICIENCY_PLOT, DQMNet::DQM_PROP_LUMI, dqm::DQMFileSaverBase::filename(), HLT_FULL_cff::flags, dqm::implementation::IGetter::getAllContents(), getMaxCompressedSize(), timingPdfMaker::histo, hlt_dqm_clientPB-live_cfg::me, resolutioncreator_cfi::object, AlcaSiPixelAliHarvester0T_cff::options, mps_fire::result, str, MonitorElementData::STRING, AlCaHLTBitMon_QueryRunRegistry::string, tag_, and MonitorElementData::TH1F.

Referenced by saveLumi().

◆ saveRun()

void DQMFileSaverPB::saveRun ( const FileParameters fp) const
overrideprotectedvirtual

Reimplemented from dqm::DQMFileSaverBase.

Definition at line 120 of file DQMFileSaverPB.cc.

120  {
121  // no saving for the run
122 }

Member Data Documentation

◆ fakeFilterUnitMode_

bool dqm::DQMFileSaverPB::fakeFilterUnitMode_
protected

Definition at line 35 of file DQMFileSaverPB.h.

Referenced by DQMFileSaverPB(), initRun(), and saveLumi().

◆ mergeType_

std::string dqm::DQMFileSaverPB::mergeType_
mutableprotected

Definition at line 39 of file DQMFileSaverPB.h.

Referenced by DQMFileSaverPB(), initRun(), and saveLumi().

◆ streamLabel_

std::string dqm::DQMFileSaverPB::streamLabel_
protected

Definition at line 36 of file DQMFileSaverPB.h.

Referenced by DQMFileSaverPB(), initRun(), and saveLumi().

◆ tag_

std::string dqm::DQMFileSaverPB::tag_
protected

Definition at line 37 of file DQMFileSaverPB.h.

Referenced by DQMFileSaverPB(), saveLumi(), and savePB().

◆ transferDestination_

std::string dqm::DQMFileSaverPB::transferDestination_
mutableprotected

Definition at line 38 of file DQMFileSaverPB.h.

Referenced by DQMFileSaverPB(), initRun(), and saveLumi().

resolutioncreator_cfi.object
object
Definition: resolutioncreator_cfi.py:4
Options
std::vector< std::shared_ptr< fireworks::OptionNode > > Options
Definition: FWExpressionValidator.cc:28
evf::FastMonitoringService::getEventsProcessedForLumi
unsigned int getEventsProcessedForLumi(unsigned int lumi, bool *abortFlag=nullptr)
Definition: FastMonitoringService.cc:726
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
dqm::DQMFileSaverBase::filename
static const std::string filename(const FileParameters &fp, bool useLumi=false)
Definition: DQMFileSaverBase.cc:92
MonitorElementData::Kind::TH1F
dqm::DQMFileSaverPB::getMaxCompressedSize
int getMaxCompressedSize(int bufferSize) const
Definition: DQMFileSaverPB.cc:333
MonitorElementData::Kind::STRING
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
dqm::DQMFileSaverPB::fakeFilterUnitMode_
bool fakeFilterUnitMode_
Definition: DQMFileSaverPB.h:35
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:278
personalPlayback.fp
fp
Definition: personalPlayback.py:523
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
dqm::implementation::IGetter::getAllContents
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) const
Definition: DQMStore.cc:609
query.host
string host
Definition: query.py:115
edmScanValgrind.buffer
buffer
Definition: edmScanValgrind.py:171
evf::EvFDaqDirector::getInitFilePath
std::string getInitFilePath(std::string const &stream) const
Definition: EvFDaqDirector.cc:446
options
Definition: options.py:1
evf::FastMonitoringService
Definition: FastMonitoringService.h:155
DQMNet::DQM_PROP_EFFICIENCY_PLOT
static const uint32_t DQM_PROP_EFFICIENCY_PLOT
Definition: DQMNet.h:64
str
#define str(s)
Definition: TestProcessor.cc:53
dqm::DQMFileSaverPB::savePB
void savePB(DQMStore *store, std::string const &filename, int run, int lumi) const
Definition: DQMFileSaverPB.cc:223
dqm::DQMFileSaverPB::tag_
std::string tag_
Definition: DQMFileSaverPB.h:37
geometryDiff.file
file
Definition: geometryDiff.py:13
dqmstorepb::ROOTFilePB
dqm::DQMFileSaverPB::transferDestination_
std::string transferDestination_
Definition: DQMFileSaverPB.h:38
dqm::DQMFileSaverPB::mergeType_
std::string mergeType_
Definition: DQMFileSaverPB.h:39
dqm::DQMFileSaverPB::compressME
ulong compressME(const TBufferFile &buffer, int maxOutputSize, char *compression_output) const
Definition: DQMFileSaverPB.cc:342
edm::Service
Definition: Service.h:30
evf::EvFDaqDirector
Definition: EvFDaqDirector.h:62
visDQMUpload.buf
buf
Definition: visDQMUpload.py:160
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
dqm::DQMFileSaverPB::fillJson
static boost::property_tree::ptree fillJson(int run, int lumi, const std::string &dataFilePathName, const std::string &transferDestinationStr, const std::string &mergeTypeStr, evf::FastMonitoringService *fms)
Definition: DQMFileSaverPB.cc:124
Exception
Definition: hltDiff.cc:245
AlcaSiPixelAliHarvester0T_cff.options
options
Definition: AlcaSiPixelAliHarvester0T_cff.py:42
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
dqm::DQMFileSaverBase::DQMFileSaverBase
DQMFileSaverBase(const edm::ParameterSet &ps)
Definition: DQMFileSaverBase.cc:29
submitPVValidationJobs.inputFiles
list inputFiles
Definition: submitPVValidationJobs.py:929
DQMNet::DQM_PROP_LUMI
static const uint32_t DQM_PROP_LUMI
Definition: DQMNet.h:61
mps_fire.result
result
Definition: mps_fire.py:311
dqm::DQMFileSaverPB::streamLabel_
std::string streamLabel_
Definition: DQMFileSaverPB.h:36
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:61
edm_modernize_messagelogger.stat
stat
Definition: edm_modernize_messagelogger.py:27
dqm::DQMFileSaverBase::fillDescription
static void fillDescription(edm::ParameterSetDescription &d)
Definition: DQMFileSaverBase.cc:139
HLT_FULL_cff.flags
flags
Definition: HLT_FULL_cff.py:13168
edm::ConfigurationDescriptions::addDefault
void addDefault(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:99
lumi
Definition: LumiSectionData.h:20
evf::MergeTypePB
Definition: EvFDaqDirector.h:58