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

Implemented global EDProducer, EDFilter and EDAnalyzer #200

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
4 changes: 0 additions & 4 deletions FWCore/Framework/interface/EDAnalyzer.h
Expand Up @@ -49,8 +49,6 @@ namespace edm {
CurrentProcessingContext const* cpc);
void doRespondToOpenInputFile(FileBlock const& fb);
void doRespondToCloseInputFile(FileBlock const& fb);
void doRespondToOpenOutputFiles(FileBlock const& fb);
void doRespondToCloseOutputFiles(FileBlock const& fb);
void doPreForkReleaseResources();
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);
void registerProductsAndCallbacks(EDAnalyzer const*, ProductRegistry* reg);
Expand All @@ -64,8 +62,6 @@ namespace edm {
virtual void endLuminosityBlock(LuminosityBlock const&, EventSetup const&){}
virtual void respondToOpenInputFile(FileBlock const&) {}
virtual void respondToCloseInputFile(FileBlock const&) {}
virtual void respondToOpenOutputFiles(FileBlock const&) {}
virtual void respondToCloseOutputFiles(FileBlock const&) {}
virtual void preForkReleaseResources() {}
virtual void postForkReacquireResources(unsigned int /*iChildIndex*/, unsigned int /*iNumberOfChildren*/) {}

Expand Down
4 changes: 0 additions & 4 deletions FWCore/Framework/interface/EDFilter.h
Expand Up @@ -58,8 +58,6 @@ namespace edm {
CurrentProcessingContext const* cpc);
void doRespondToOpenInputFile(FileBlock const& fb);
void doRespondToCloseInputFile(FileBlock const& fb);
void doRespondToOpenOutputFiles(FileBlock const& fb);
void doRespondToCloseOutputFiles(FileBlock const& fb);
void doPreForkReleaseResources();
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);

Expand All @@ -79,8 +77,6 @@ namespace edm {
virtual void endLuminosityBlock(LuminosityBlock const& iL, EventSetup const& iE){}
virtual void respondToOpenInputFile(FileBlock const&) {}
virtual void respondToCloseInputFile(FileBlock const&) {}
virtual void respondToOpenOutputFiles(FileBlock const&) {}
virtual void respondToCloseOutputFiles(FileBlock const&) {}
virtual void preForkReleaseResources() {}
virtual void postForkReacquireResources(unsigned int /*iChildIndex*/, unsigned int /*iNumberOfChildren*/) {}

Expand Down
4 changes: 0 additions & 4 deletions FWCore/Framework/interface/EDProducer.h
Expand Up @@ -52,8 +52,6 @@ namespace edm {
CurrentProcessingContext const* cpc);
void doRespondToOpenInputFile(FileBlock const& fb);
void doRespondToCloseInputFile(FileBlock const& fb);
void doRespondToOpenOutputFiles(FileBlock const& fb);
void doRespondToCloseOutputFiles(FileBlock const& fb);
void doPreForkReleaseResources();
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);
void registerProductsAndCallbacks(EDProducer* module, ProductRegistry* reg) {
Expand All @@ -72,8 +70,6 @@ namespace edm {
virtual void endLuminosityBlock(LuminosityBlock const& iL, EventSetup const& iE){}
virtual void respondToOpenInputFile(FileBlock const&) {}
virtual void respondToCloseInputFile(FileBlock const&) {}
virtual void respondToOpenOutputFiles(FileBlock const&) {}
virtual void respondToCloseOutputFiles(FileBlock const&) {}
virtual void preForkReleaseResources() {}
virtual void postForkReacquireResources(unsigned int /*iChildIndex*/, unsigned int /*iNumberOfChildren*/) {}

Expand Down
2 changes: 0 additions & 2 deletions FWCore/Framework/interface/EventProcessor.h
Expand Up @@ -238,8 +238,6 @@ namespace edm {

virtual void respondToOpenInputFile();
virtual void respondToCloseInputFile();
virtual void respondToOpenOutputFiles();
virtual void respondToCloseOutputFiles();

virtual void startingNewLoop();
virtual bool endOfLoop();
Expand Down
2 changes: 0 additions & 2 deletions FWCore/Framework/interface/IEventProcessor.h
Expand Up @@ -49,8 +49,6 @@ namespace edm {

virtual void respondToOpenInputFile() = 0;
virtual void respondToCloseInputFile() = 0;
virtual void respondToOpenOutputFiles() = 0;
virtual void respondToCloseOutputFiles() = 0;

virtual void startingNewLoop() = 0;
virtual bool endOfLoop() = 0;
Expand Down
4 changes: 0 additions & 4 deletions FWCore/Framework/interface/OutputModule.h
Expand Up @@ -170,8 +170,6 @@ namespace edm {
void doOpenFile(FileBlock const& fb);
void doRespondToOpenInputFile(FileBlock const& fb);
void doRespondToCloseInputFile(FileBlock const& fb);
void doRespondToOpenOutputFiles(FileBlock const& fb);
void doRespondToCloseOutputFiles(FileBlock const& fb);
void doPreForkReleaseResources();
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);

Expand Down Expand Up @@ -206,8 +204,6 @@ namespace edm {
virtual void openFile(FileBlock const&) {}
virtual void respondToOpenInputFile(FileBlock const&) {}
virtual void respondToCloseInputFile(FileBlock const&) {}
virtual void respondToOpenOutputFiles(FileBlock const&) {}
virtual void respondToCloseOutputFiles(FileBlock const&) {}
virtual void preForkReleaseResources() {}
virtual void postForkReacquireResources(unsigned int /*iChildIndex*/, unsigned int /*iNumberOfChildren*/) {}

Expand Down
6 changes: 6 additions & 0 deletions FWCore/Framework/interface/ProducerBase.h
Expand Up @@ -23,6 +23,10 @@ namespace edm {
class EDProducerBase;
class EDFilterBase;
}
namespace global {
class EDProducerBase;
class EDFilterBase;
}

class ProducerBase : private ProductRegistryHelper {
public:
Expand Down Expand Up @@ -50,6 +54,8 @@ namespace edm {
friend class EDFilter;
friend class one::EDProducerBase;
friend class one::EDFilterBase;
friend class global::EDProducerBase;
friend class global::EDFilterBase;

template< typename P>
void commit_(P& iPrincipal) {
Expand Down
6 changes: 0 additions & 6 deletions FWCore/Framework/interface/Schedule.h
Expand Up @@ -160,12 +160,6 @@ namespace edm {
// Call respondToCloseInputFile() on all Modules
void respondToCloseInputFile(FileBlock const& fb);

// Call respondToOpenOutputFiles() on all Modules
void respondToOpenOutputFiles(FileBlock const& fb);

// Call respondToCloseOutputFiles() on all Modules
void respondToCloseOutputFiles(FileBlock const& fb);

// Call shouldWeCloseFile() on all OutputModules.
bool shouldWeCloseOutput() const;

Expand Down
14 changes: 0 additions & 14 deletions FWCore/Framework/interface/SubProcess.h
Expand Up @@ -112,20 +112,6 @@ namespace edm {
if(subProcess_.get()) subProcess_->respondToCloseInputFile(fb);
}

// Call respondToOpenOutputFiles() on all Modules
void respondToOpenOutputFiles(FileBlock const& fb) {
ServiceRegistry::Operate operate(serviceToken_);
schedule_->respondToOpenOutputFiles(fb);
if(subProcess_.get()) subProcess_->respondToOpenOutputFiles(fb);
}

// Call respondToCloseOutputFiles() on all Modules
void respondToCloseOutputFiles(FileBlock const& fb) {
ServiceRegistry::Operate operate(serviceToken_);
schedule_->respondToCloseOutputFiles(fb);
if(subProcess_.get()) subProcess_->respondToCloseOutputFiles(fb);
}

// Call shouldWeCloseFile() on all OutputModules.
bool shouldWeCloseOutput() const {
ServiceRegistry::Operate operate(serviceToken_);
Expand Down
57 changes: 57 additions & 0 deletions FWCore/Framework/interface/global/EDAnalyzer.h
@@ -0,0 +1,57 @@
#ifndef FWCore_Framework_global_EDAnalyzer_h
#define FWCore_Framework_global_EDAnalyzer_h
// -*- C++ -*-
//
// Package: FWCore/Framework
// Class : edm::global::EDAnalyzer
//
/**\class edm::global::EDAnalyzer EDAnalyzer.h "FWCore/Framework/interface/global/EDAnalyzer.h"

Description: [one line class summary]

Usage:
<usage>

*/
//
// Original Author: Chris Jones
// Created: Thu, 18 Jul 2013 11:51:07 GMT
//

// system include files

// user include files
#include "FWCore/Framework/interface/global/analyzerAbilityToImplementor.h"
#include "FWCore/Framework/interface/moduleAbilities.h"

// forward declarations

namespace edm {
namespace global {
template< typename... T>
class EDAnalyzer : public analyzer::AbilityToImplementor<T>::Type...,
public virtual EDAnalyzerBase
{

public:
EDAnalyzer() = default;

// ---------- const member functions ---------------------

// ---------- static member functions --------------------

// ---------- member functions ---------------------------

private:
EDAnalyzer(const EDAnalyzer&) = delete;

const EDAnalyzer& operator=(const EDAnalyzer&) = delete;

// ---------- member data --------------------------------

};

}
}

#endif
136 changes: 136 additions & 0 deletions FWCore/Framework/interface/global/EDAnalyzerBase.h
@@ -0,0 +1,136 @@
#ifndef FWCore_Framework_global_EDAnalyzerBase_h
#define FWCore_Framework_global_EDAnalyzerBase_h
// -*- C++ -*-
//
// Package: FWCore/Framework
// Class : EDAnalyzerBase
//
/**\class EDAnalyzerBase EDAnalyzerBase.h "EDAnalyzerBase.h"

Description: [one line class summary]

Usage:
<usage>

*/
//
// Original Author: Chris Jones
// Created: Thu, 18 Jul 2013 11:51:14 GMT
// $Id$
//

// system include files

// user include files
#include "FWCore/Framework/interface/EDConsumerBase.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "DataFormats/Provenance/interface/ModuleDescription.h"
#include "FWCore/ParameterSet/interface/ParameterSetfwd.h"

// forward declarations

namespace edm {
class StreamID;

namespace global {

class EDAnalyzerBase : public EDConsumerBase
{

public:
template <typename T> friend class edm::WorkerT;
typedef EDAnalyzerBase ModuleType;
typedef WorkerT<EDAnalyzerBase> WorkerType;

EDAnalyzerBase();
virtual ~EDAnalyzerBase();

static void fillDescriptions(ConfigurationDescriptions& descriptions);
static void prevalidate(ConfigurationDescriptions& descriptions);
static const std::string& baseType();

protected:
// The returned pointer will be null unless the this is currently
// executing its event loop function ('produce').
CurrentProcessingContext const* currentContext() const;

private:
bool doEvent(EventPrincipal& ep, EventSetup const& c,
CurrentProcessingContext const* cpcp);
void doBeginJob();
void doEndJob();

void doBeginStream(StreamID id);
void doEndStream(StreamID id);
void doStreamBeginRun(StreamID id,
RunPrincipal& ep,
EventSetup const& c,
CurrentProcessingContext const* cpcp);
void doStreamEndRun(StreamID id,
RunPrincipal& ep,
EventSetup const& c,
CurrentProcessingContext const* cpcp);
void doStreamBeginLuminosityBlock(StreamID id,
LuminosityBlockPrincipal& ep,
EventSetup const& c,
CurrentProcessingContext const* cpcp);
void doStreamEndLuminosityBlock(StreamID id,
LuminosityBlockPrincipal& ep,
EventSetup const& c,
CurrentProcessingContext const* cpcp);


void doBeginRun(RunPrincipal& rp, EventSetup const& c,
CurrentProcessingContext const* cpc);
void doEndRun(RunPrincipal& rp, EventSetup const& c,
CurrentProcessingContext const* cpc);
void doBeginLuminosityBlock(LuminosityBlockPrincipal& lbp, EventSetup const& c,
CurrentProcessingContext const* cpc);
void doEndLuminosityBlock(LuminosityBlockPrincipal& lbp, EventSetup const& c,
CurrentProcessingContext const* cpc);

//For now, the following are just dummy implemenations with no ability for users to override
void doRespondToOpenInputFile(FileBlock const& fb);
void doRespondToCloseInputFile(FileBlock const& fb);
void doPreForkReleaseResources();
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);


void registerProductsAndCallbacks(EDAnalyzerBase* module, ProductRegistry* reg);
std::string workerType() const {return "WorkerT<EDAnalyzer>";}

virtual void analyze(StreamID, Event const& , EventSetup const&) const= 0;
virtual void beginJob() {}
virtual void endJob(){}

virtual void doBeginStream_(StreamID id);
virtual void doEndStream_(StreamID id);
virtual void doStreamBeginRun_(StreamID id, Run const& rp, EventSetup const& c);
virtual void doStreamEndRun_(StreamID id, Run const& rp, EventSetup const& c);
virtual void doStreamEndRunSummary_(StreamID id, Run const& rp, EventSetup const& c);
virtual void doStreamBeginLuminosityBlock_(StreamID id, LuminosityBlock const& lbp, EventSetup const& c);
virtual void doStreamEndLuminosityBlock_(StreamID id, LuminosityBlock const& lbp, EventSetup const& c);
virtual void doStreamEndLuminosityBlockSummary_(StreamID id, LuminosityBlock const& lbp, EventSetup const& c);

virtual void doBeginRun_(Run const& rp, EventSetup const& c);
virtual void doBeginRunSummary_(Run const& rp, EventSetup const& c);
virtual void doEndRunSummary_(Run const& rp, EventSetup const& c);
virtual void doEndRun_(Run const& rp, EventSetup const& c);
virtual void doBeginLuminosityBlock_(LuminosityBlock const& lbp, EventSetup const& c);
virtual void doBeginLuminosityBlockSummary_(LuminosityBlock const& rp, EventSetup const& c);
virtual void doEndLuminosityBlockSummary_(LuminosityBlock const& lb, EventSetup const& c);
virtual void doEndLuminosityBlock_(LuminosityBlock const& lb, EventSetup const& c);

void setModuleDescription(ModuleDescription const& md) {
moduleDescription_ = md;
}
ModuleDescription moduleDescription_;
CurrentProcessingContext const* current_context_; //Change in future

std::function<void(BranchDescription const&)> callWhenNewProductsRegistered_;
};

}
}

#endif
60 changes: 60 additions & 0 deletions FWCore/Framework/interface/global/EDFilter.h
@@ -0,0 +1,60 @@
#ifndef FWCore_Framework_global_EDFilter_h
#define FWCore_Framework_global_EDFilter_h
// -*- C++ -*-
//
// Package: FWCore/Framework
// Class : edm::global::EDFilter
//
/**\class edm::global::EDFilter EDFilter.h "FWCore/Framework/interface/global/EDFilter.h"

Description: [one line class summary]

Usage:
<usage>

*/
//
// Original Author: Chris Jones
// Created: Tue, 23 Jul 2013 11:51:07 GMT
//

// system include files

// user include files
#include "FWCore/Framework/interface/global/filterAbilityToImplementor.h"
#include "FWCore/Framework/interface/moduleAbilities.h"

// forward declarations

namespace edm {
namespace global {
template< typename... T>
class EDFilter : public filter::SpecializeAbilityToImplementor<
CheckAbility<edm::module::Abilities::kRunSummaryCache,T...>::kHasIt & CheckAbility<edm::module::Abilities::kEndRunProducer,T...>::kHasIt,
CheckAbility<edm::module::Abilities::kLuminosityBlockSummaryCache,T...>::kHasIt & CheckAbility<edm::module::Abilities::kEndLuminosityBlockProducer,T...>::kHasIt,
T>::Type...,
public virtual EDFilterBase
{

public:
EDFilter() = default;

// ---------- const member functions ---------------------

// ---------- static member functions --------------------

// ---------- member functions ---------------------------

private:
EDFilter(const EDFilter&) = delete;

const EDFilter& operator=(const EDFilter&) = delete;

// ---------- member data --------------------------------

};

}
}

#endif