Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforce consumes interface in output modules #13600

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
19 changes: 8 additions & 11 deletions DQMServices/FwkIO/plugins/DQMRootOutputModule.cc
Expand Up @@ -28,8 +28,8 @@

// user include files
#include "FWCore/Framework/interface/one/OutputModule.h"
#include "FWCore/Framework/interface/RunPrincipal.h"
#include "FWCore/Framework/interface/LuminosityBlockPrincipal.h"
#include "FWCore/Framework/interface/RunForOutput.h"
#include "FWCore/Framework/interface/LuminosityBlockForOutput.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/MonitorElement.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
Expand Down Expand Up @@ -186,9 +186,9 @@ class DQMRootOutputModule : public edm::one::OutputModule<> {
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

private:
virtual void write(edm::EventPrincipal const& e, edm::ModuleCallingContext const*) override;
virtual void writeLuminosityBlock(edm::LuminosityBlockPrincipal const&, edm::ModuleCallingContext const*) override;
virtual void writeRun(edm::RunPrincipal const&, edm::ModuleCallingContext const*) override;
virtual void write(edm::EventForOutput const& e) override;
virtual void writeLuminosityBlock(edm::LuminosityBlockForOutput const&) override;
virtual void writeRun(edm::RunForOutput const&) override;
virtual bool isFileOpen() const override;
virtual void openFile(edm::FileBlock const&) override;
virtual void reallyCloseFile() override;
Expand Down Expand Up @@ -401,14 +401,12 @@ DQMRootOutputModule::postForkReacquireResources(unsigned int childIndex, unsigne


void
DQMRootOutputModule::write(edm::EventPrincipal const&, edm::ModuleCallingContext const*){

DQMRootOutputModule::write(edm::EventForOutput const&){
}


void
DQMRootOutputModule::writeLuminosityBlock(edm::LuminosityBlockPrincipal const& iLumi,
edm::ModuleCallingContext const*) {
DQMRootOutputModule::writeLuminosityBlock(edm::LuminosityBlockForOutput const& iLumi) {
//std::cout << "DQMRootOutputModule::writeLuminosityBlock"<< std::endl;
edm::Service<DQMStore> dstore;
m_run = iLumi.id().run();
Expand Down Expand Up @@ -469,8 +467,7 @@ DQMRootOutputModule::writeLuminosityBlock(edm::LuminosityBlockPrincipal const& i
jr->reportLumiSection(m_jrToken, m_run, m_lumi);
}

void DQMRootOutputModule::writeRun(edm::RunPrincipal const& iRun,
edm::ModuleCallingContext const*){
void DQMRootOutputModule::writeRun(edm::RunForOutput const& iRun){
//std::cout << "DQMRootOutputModule::writeRun"<< std::endl;
edm::Service<DQMStore> dstore;
m_run = iRun.id().run();
Expand Down
12 changes: 5 additions & 7 deletions DQMServices/StreamerIO/test/DQMStreamerOutputModule.cc
@@ -1,6 +1,6 @@
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "IOPool/Streamer/interface/StreamerOutputModuleBase.h"
#include "FWCore/Framework/interface/LuminosityBlockPrincipal.h"
#include "FWCore/Framework/interface/LuminosityBlockForOutput.h"
#include "FWCore/ServiceRegistry/interface/ModuleCallingContext.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

Expand Down Expand Up @@ -39,11 +39,9 @@ class DQMStreamerOutputModule : public edm::StreamerOutputModuleBase {
virtual void doOutputHeader(InitMsgBuilder const& init_message) override;
virtual void doOutputEvent(EventMsgBuilder const& msg) override;

virtual void beginLuminosityBlock(edm::LuminosityBlockPrincipal const&,
edm::ModuleCallingContext const*) override;
virtual void beginLuminosityBlock(edm::LuminosityBlockForOutput const&) override;

virtual void endLuminosityBlock(edm::LuminosityBlockPrincipal const&,
edm::ModuleCallingContext const*) override;
virtual void endLuminosityBlock(edm::LuminosityBlockForOutput const&) override;

private:
std::string streamLabel_;
Expand Down Expand Up @@ -95,7 +93,7 @@ void DQMStreamerOutputModule::doOutputEvent(EventMsgBuilder const& msg) {
}

void DQMStreamerOutputModule::beginLuminosityBlock(
edm::LuminosityBlockPrincipal const& ls, edm::ModuleCallingContext const*) {
edm::LuminosityBlockForOutput const& ls) {

std::cout << "DQMStreamerOutputModule : begin lumi." << std::endl;

Expand Down Expand Up @@ -130,7 +128,7 @@ void DQMStreamerOutputModule::beginLuminosityBlock(
}

void DQMStreamerOutputModule::endLuminosityBlock(
edm::LuminosityBlockPrincipal const& ls, edm::ModuleCallingContext const*) {
edm::LuminosityBlockForOutput const& ls) {

std::cout << "DQMStreamerOutputModule : end lumi " << std::endl;
stream_writer_events_.reset();
Expand Down
8 changes: 6 additions & 2 deletions DataFormats/Common/interface/BasicHandle.h
Expand Up @@ -57,9 +57,7 @@ namespace edm {
prov_(&productData.provenance()) {
}

#if defined( __GXX_EXPERIMENTAL_CXX0X__)
BasicHandle(BasicHandle &&h) = default;
#endif

BasicHandle(WrapperBase const* iProd, Provenance const* iProv) :
product_(iProd),
Expand Down Expand Up @@ -119,6 +117,12 @@ namespace edm {
return whyFailedFactory_;
}

void clear() {
product_ = nullptr;
prov_ = nullptr;
whyFailedFactory_.reset();
}

private:
WrapperBase const* product_;
Provenance const* prov_;
Expand Down
1 change: 0 additions & 1 deletion DataFormats/Common/interface/EDProductfwd.h
Expand Up @@ -13,7 +13,6 @@ namespace edm
class BasicHandle;
class EDProductGetter;
class ProductID;
class OutputHandle;
class RefCore;
class WrapperBase;

Expand Down
120 changes: 0 additions & 120 deletions DataFormats/Common/interface/OutputHandle.h

This file was deleted.

7 changes: 4 additions & 3 deletions DataFormats/Provenance/interface/SelectedProducts.h
@@ -1,15 +1,16 @@
#ifndef DataFormats_Provenance_SelectedProducts_h
#define DataFormats_Provenance_SelectedProducts_h

#include "boost/array.hpp"
#include <array>
#include <vector>

#include "DataFormats/Provenance/interface/BranchType.h"
#include "FWCore/Utilities/interface/EDGetToken.h"

namespace edm {
class BranchDescription;
typedef std::vector<BranchDescription const *> SelectedProducts;
typedef boost::array<SelectedProducts, NumBranchTypes> SelectedProductsForBranchType;
typedef std::vector<std::pair<BranchDescription const *, EDGetToken>> SelectedProducts;
typedef std::array<SelectedProducts, NumBranchTypes> SelectedProductsForBranchType;
}

#endif
40 changes: 21 additions & 19 deletions EventFilter/Utilities/plugins/RawEventOutputModuleForBU.h
@@ -1,11 +1,12 @@
#ifndef IOPool_Streamer_RawEventOutputModuleForBU_h
#define IOPool_Streamer_RawEventOutputModuleForBU_h

#include "FWCore/Framework/interface/EventPrincipal.h"
#include "FWCore/Framework/interface/EventForOutput.h"
#include "FWCore/Framework/interface/OutputModule.h"
#include "FWCore/Framework/interface/LuminosityBlockPrincipal.h"
#include "FWCore/Framework/interface/LuminosityBlockForOutput.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/ServiceRegistry/interface/ModuleCallingContext.h"
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "DataFormats/Common/interface/Handle.h"
#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
#include "DataFormats/FEDRawData/interface/FEDRawData.h"
Expand Down Expand Up @@ -36,18 +37,19 @@ class RawEventOutputModuleForBU : public edm::OutputModule
~RawEventOutputModuleForBU();

private:
virtual void write(edm::EventPrincipal const& e, edm::ModuleCallingContext const*);
virtual void beginRun(edm::RunPrincipal const&, edm::ModuleCallingContext const*);
virtual void endRun(edm::RunPrincipal const&, edm::ModuleCallingContext const*);
virtual void writeRun(const edm::RunPrincipal&, edm::ModuleCallingContext const*){}
virtual void writeLuminosityBlock(const edm::LuminosityBlockPrincipal&, edm::ModuleCallingContext const*){}
virtual void write(edm::EventForOutput const& e) override;
virtual void beginRun(edm::RunForOutput const&) override;
virtual void endRun(edm::RunForOutput const&) override;
virtual void writeRun(const edm::RunForOutput&) override {}
virtual void writeLuminosityBlock(const edm::LuminosityBlockForOutput&) override {}

virtual void beginLuminosityBlock(edm::LuminosityBlockPrincipal const&, edm::ModuleCallingContext const*);
virtual void endLuminosityBlock(edm::LuminosityBlockPrincipal const&, edm::ModuleCallingContext const*);
virtual void beginLuminosityBlock(edm::LuminosityBlockForOutput const&) override;
virtual void endLuminosityBlock(edm::LuminosityBlockForOutput const&) override;

std::auto_ptr<Consumer> templateConsumer_;
std::string label_;
std::string instance_;
edm::EDGetTokenT<FEDRawDataCollection> token_;
unsigned int numEventsPerFile_;
unsigned int frdVersion_;
unsigned long long totsize;
Expand All @@ -65,6 +67,7 @@ RawEventOutputModuleForBU<Consumer>::RawEventOutputModuleForBU(edm::ParameterSet
templateConsumer_(new Consumer(ps)),
label_(ps.getUntrackedParameter<std::string>("ProductLabel","source")),
instance_(ps.getUntrackedParameter<std::string>("ProductInstance","")),
token_(consumes<FEDRawDataCollection>(edm::InputTag(label_, instance_))),
numEventsPerFile_(ps.getUntrackedParameter<unsigned int>("numEventsPerFile",100)),
frdVersion_(ps.getUntrackedParameter<unsigned int>("frdVersion",3)),
totsize(0LL),
Expand All @@ -80,7 +83,7 @@ template <class Consumer>
RawEventOutputModuleForBU<Consumer>::~RawEventOutputModuleForBU() {}

template <class Consumer>
void RawEventOutputModuleForBU<Consumer>::write(edm::EventPrincipal const& e, edm::ModuleCallingContext const *mcc)
void RawEventOutputModuleForBU<Consumer>::write(edm::EventForOutput const& e)
{
unsigned int ls = e.luminosityBlock();
if(totevents>0 && totevents%numEventsPerFile_==0){
Expand All @@ -92,9 +95,8 @@ void RawEventOutputModuleForBU<Consumer>::write(edm::EventPrincipal const& e, ed
totevents++;
// serialize the FEDRawDataCollection into the format that we expect for
// FRDEventMsgView objects (may be better ways to do this)
edm::Event event(const_cast<edm::EventPrincipal&>(e), description(),mcc);
edm::Handle<FEDRawDataCollection> fedBuffers;
event.getByLabel(label_, instance_, fedBuffers);
e.getByToken(token_, fedBuffers);

// determine the expected size of the FRDEvent IN BYTES !!!!!
int headerSize = FRDHeaderVersionSize[frdVersion_];
Expand All @@ -112,9 +114,9 @@ void RawEventOutputModuleForBU<Consumer>::write(edm::EventPrincipal const& e, ed
boost::shared_array<unsigned char> workBuffer(new unsigned char[expectedSize + 256]);
uint32 *bufPtr = (uint32*) workBuffer.get();
*bufPtr++ = (uint32) frdVersion_; // version number
*bufPtr++ = (uint32) event.id().run();
*bufPtr++ = (uint32) event.luminosityBlock();
*bufPtr++ = (uint32) event.id().event();
*bufPtr++ = (uint32) e.id().run();
*bufPtr++ = (uint32) e.luminosityBlock();
*bufPtr++ = (uint32) e.id().event();
if (frdVersion_==4)
*bufPtr++ = 0;//64-bit event id high part

Expand Down Expand Up @@ -166,20 +168,20 @@ void RawEventOutputModuleForBU<Consumer>::write(edm::EventPrincipal const& e, ed
}

template <class Consumer>
void RawEventOutputModuleForBU<Consumer>::beginRun(edm::RunPrincipal const&, edm::ModuleCallingContext const*)
void RawEventOutputModuleForBU<Consumer>::beginRun(edm::RunForOutput const&)
{
// edm::Service<evf::EvFDaqDirector>()->updateBuLock(1);
templateConsumer_->start();
}

template <class Consumer>
void RawEventOutputModuleForBU<Consumer>::endRun(edm::RunPrincipal const&, edm::ModuleCallingContext const*)
void RawEventOutputModuleForBU<Consumer>::endRun(edm::RunForOutput const&)
{
templateConsumer_->stop();
}

template <class Consumer>
void RawEventOutputModuleForBU<Consumer>::beginLuminosityBlock(edm::LuminosityBlockPrincipal const& ls, edm::ModuleCallingContext const*){
void RawEventOutputModuleForBU<Consumer>::beginLuminosityBlock(edm::LuminosityBlockForOutput const& ls){
index_ = 0;
std::string filename = edm::Service<evf::EvFDaqDirector>()->getOpenRawFilePath( ls.id().luminosityBlock(),index_);
std::string destinationDir = edm::Service<evf::EvFDaqDirector>()->buBaseRunDir();
Expand All @@ -205,7 +207,7 @@ void RawEventOutputModuleForBU<Consumer>::beginLuminosityBlock(edm::LuminosityBl
firstLumi_ = false;
}
template <class Consumer>
void RawEventOutputModuleForBU<Consumer>::endLuminosityBlock(edm::LuminosityBlockPrincipal const& ls, edm::ModuleCallingContext const*){
void RawEventOutputModuleForBU<Consumer>::endLuminosityBlock(edm::LuminosityBlockForOutput const& ls){

// templateConsumer_->touchlock(ls.id().luminosityBlock(),basedir);
templateConsumer_->endOfLS(ls.id().luminosityBlock());
Expand Down