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

70X consumes migration III #1311

Merged
merged 2 commits into from Nov 8, 2013
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
33 changes: 18 additions & 15 deletions CommonTools/CandAlgos/interface/CandCombiner.h
Expand Up @@ -25,6 +25,7 @@
#include "CommonTools/Utils/interface/cutParser.h"
#include "DataFormats/Candidate/interface/Candidate.h"
#include "FWCore/Utilities/interface/EDMException.h"
#include "FWCore/Utilities/interface/transform.h"
#include <string>
#include <vector>
#include <algorithm>
Expand All @@ -35,8 +36,8 @@ namespace edm {

namespace reco {
namespace modules {


struct RoleNames {
explicit RoleNames(const edm::ParameterSet & cfg) {

Expand All @@ -54,15 +55,15 @@ namespace reco {
c.setName(name_);
c.setRoles(roles_);
c.applyRoles();
}
}
private:
/// Name of this candidate
std::string name_;
// Name of the roles
std::vector<std::string> roles_;
};


struct CandCombinerBase : public edm::EDProducer {
CandCombinerBase(const edm::ParameterSet & cfg) :
setLongLived_(false),
Expand All @@ -83,7 +84,7 @@ namespace reco {
else
throw edm::Exception(edm::errors::Configuration,
"failed to parse \"" + decay + "\"");

int lists = labels_.size();
if(lists != 2 && lists != 3)
throw edm::Exception(edm::errors::LogicError,
Expand All @@ -100,10 +101,12 @@ namespace reco {
vector<string> vIntParams = cfg.getParameterNamesForType<int>();
found = find(vIntParams.begin(), vIntParams.end(), setPdgId) != vIntParams.end();
if(found) { setPdgId_ = true; pdgId_ = cfg.getParameter<int>("setPdgId"); }
tokens_ = edm::vector_transform( labels_, [this](ConjInfo const & cI){return consumes<CandidateView>(cI.tag_);} );
}
protected:
/// label vector
std::vector<cand::parser::ConjInfo> labels_;
std::vector<edm::EDGetTokenT<CandidateView> > tokens_;
/// daughter charges
std::vector<int> dauCharge_;
/// set long lived flag
Expand All @@ -115,24 +118,24 @@ namespace reco {
/// which pdgId to set
int pdgId_;
};
template<typename Selector,

template<typename Selector,
typename PairSelector = AnyPairSelector,
typename Cloner = ::combiner::helpers::NormalClone,
typename Cloner = ::combiner::helpers::NormalClone,
typename OutputCollection = reco::CompositeCandidateCollection,
typename Setup = AddFourMomenta,
typename Init = typename ::reco::modules::EventSetupInit<Setup>::type
typename Init = typename ::reco::modules::EventSetupInit<Setup>::type
>
class CandCombiner : public CandCombinerBase {
public:
/// constructor from parameter settypedef
/// constructor from parameter settypedef
explicit CandCombiner(const edm::ParameterSet & cfg) :
CandCombinerBase(cfg),
combiner_(reco::modules::make<Selector>(cfg),
combiner_(reco::modules::make<Selector>(cfg),
reco::modules::make<PairSelector>(cfg),
Setup(cfg),
cfg.existsAs<bool>("checkCharge") ? cfg.getParameter<bool>("checkCharge") : true,
cfg.existsAs<bool>("checkOverlap") ? cfg.getParameter<bool>("checkOverlap") : true,
Setup(cfg),
cfg.existsAs<bool>("checkCharge") ? cfg.getParameter<bool>("checkCharge") : true,
cfg.existsAs<bool>("checkOverlap") ? cfg.getParameter<bool>("checkOverlap") : true,
dauCharge_),
names_(cfg) {
produces<OutputCollection>();
Expand All @@ -149,7 +152,7 @@ namespace reco {
int n = labels_.size();
vector<edm::Handle<CandidateView> > colls(n);
for(int i = 0; i < n; ++i)
evt.getByLabel(labels_[i].tag_, colls[i]);
evt.getByToken(tokens_[i], colls[i]);

auto_ptr<OutputCollection> out = combiner_.combine(colls, names_.roles());
if(setLongLived_ || setMassConstraint_ || setPdgId_) {
Expand Down
12 changes: 6 additions & 6 deletions CommonTools/CandAlgos/interface/CloneProducer.h
Expand Up @@ -2,13 +2,13 @@
#define CandAlgos_CloneProducer_h
/** \class CloneProducer
*
* Clones a concrete Candidate collection
* Clones a concrete Candidate collection
* to a CandidateCollection (i.e.: OwnVector<Candidate>) filled
* with clones of the original candidate collection
*
* \author: Francesco Fabozzi, INFN
* modified by Luca Lista, INFN
*
*
* Template parameters:
* - C : Concrete candidate collection type
*
Expand All @@ -31,12 +31,12 @@ class CloneProducer : public edm::EDProducer {
/// process an event
virtual void produce( edm::Event&, const edm::EventSetup& );
/// labels of the collection to be converted
edm::InputTag src_;
edm::EDGetTokenT<C> srcToken_;
};

template<typename C>
CloneProducer<C>::CloneProducer( const edm::ParameterSet& par ) :
src_( par.template getParameter<edm::InputTag>( "src" ) ) {
CloneProducer<C>::CloneProducer( const edm::ParameterSet& par ) :
srcToken_( consumes<C>( par.template getParameter<edm::InputTag>( "src" ) ) ) {
produces<reco::CandidateCollection>();
}

Expand All @@ -48,7 +48,7 @@ template<typename C>
void CloneProducer<C>::produce( edm::Event& evt, const edm::EventSetup& ) {
std::auto_ptr<reco::CandidateCollection> coll( new reco::CandidateCollection );
edm::Handle<C> masterCollection;
evt.getByLabel( src_, masterCollection );
evt.getByToken( srcToken_, masterCollection );
for( size_t i = 0; i < masterCollection->size(); ++i ) {
reco::CandidateBaseRef masterClone( edm::Ref<C>( masterCollection, i ) );
coll->push_back( masterClone->clone() );
Expand Down
27 changes: 15 additions & 12 deletions CommonTools/CandAlgos/interface/NamedCandCombiner.h
Expand Up @@ -27,6 +27,7 @@
#include "DataFormats/Candidate/interface/NamedCompositeCandidate.h"
#include "DataFormats/Candidate/interface/NamedCompositeCandidateFwd.h"
#include "FWCore/Utilities/interface/EDMException.h"
#include "FWCore/Utilities/interface/transform.h"
#include <string>
#include <vector>
#include <algorithm>
Expand All @@ -40,7 +41,7 @@ namespace reco {

struct NamedCandCombinerBase : public edm::EDProducer {
NamedCandCombinerBase( const edm::ParameterSet & cfg ) :
setLongLived_(false),
setLongLived_(false),
setMassConstraint_(false),
setPdgId_(false) {
using namespace cand::parser;
Expand All @@ -58,7 +59,7 @@ namespace reco {
else
throw edm::Exception(edm::errors::Configuration,
"failed to parse \"" + decay + "\"");

int lists = labels_.size();
if(lists != 2 && lists != 3)
throw edm::Exception(edm::errors::LogicError,
Expand All @@ -75,13 +76,15 @@ namespace reco {
vector<string> vIntParams = cfg.getParameterNamesForType<int>();
found = find(vIntParams.begin(), vIntParams.end(), setPdgId) != vIntParams.end();
if(found) { setPdgId_ = true; pdgId_ = cfg.getParameter<int>("setPdgId"); }
tokens_ = edm::vector_transform( labels_, [this](ConjInfo const & cI){return consumes<CandidateView>(cI.tag_);} );

name_ = cfg.getParameter<std::string>( "name" );
roles_= cfg.getParameter<std::vector<std::string> > ( "roles" );
}
protected:
/// label vector
std::vector<cand::parser::ConjInfo> labels_;
std::vector<EDGetTokenT<CandidateView> > tokens_;
/// daughter charges
std::vector<int> dauCharge_;
/// set long lived flag
Expand All @@ -97,24 +100,24 @@ namespace reco {
// Name of the roles
std::vector<std::string> roles_;
};
template<typename Selector,

template<typename Selector,
typename PairSelector = AnyPairSelector,
typename Cloner = ::combiner::helpers::NormalClone,
typename Cloner = ::combiner::helpers::NormalClone,
typename Setup = AddFourMomenta,
typename Init = typename ::reco::modules::EventSetupInit<Setup>::type
typename Init = typename ::reco::modules::EventSetupInit<Setup>::type
>
class NamedCandCombiner : public NamedCandCombinerBase {
public:
/// constructor from parameter settypedef
/// constructor from parameter settypedef
explicit NamedCandCombiner( const edm::ParameterSet & cfg ) :
NamedCandCombinerBase( cfg ),
combiner_( name_,
reco::modules::make<Selector>( cfg ),
reco::modules::make<Selector>( cfg ),
reco::modules::make<PairSelector>( cfg ),
Setup( cfg ),
cfg.existsAs<bool>("checkCharge") ? cfg.getParameter<bool>("checkCharge") : true,
cfg.existsAs<bool>("checkOverlap") ? cfg.getParameter<bool>("checkOverlap") : true,
Setup( cfg ),
cfg.existsAs<bool>("checkCharge") ? cfg.getParameter<bool>("checkCharge") : true,
cfg.existsAs<bool>("checkOverlap") ? cfg.getParameter<bool>("checkOverlap") : true,
dauCharge_ ) {
produces<reco::NamedCompositeCandidateCollection>();
}
Expand All @@ -130,7 +133,7 @@ namespace reco {
int n = labels_.size();
std::vector<edm::Handle<CandidateView> > colls(n);
for(int i = 0; i < n; ++i) {
evt.getByLabel(labels_[i].tag_, colls[i]);
evt.getByToken(tokens_[i], colls[i]);
}
std::vector<CandidatePtrVector> cv;
for(typename std::vector<edm::Handle<CandidateView> >::const_iterator c = colls.begin();
Expand Down
12 changes: 6 additions & 6 deletions CommonTools/CandAlgos/interface/ShallowCloneProducer.h
Expand Up @@ -2,13 +2,13 @@
#define CandAlgos_ShallowCloneProducer_h
/** \class ShallowCloneProducer
*
* Clones a concrete Candidate collection
* Clones a concrete Candidate collection
* to a CandidateCollection (i.e.: OwnVector<Candidate>) filled
* with shallow clones of the original candidate collection
*
* \author: Francesco Fabozzi, INFN
* modified by Luca Lista, INFN
*
*
* Template parameters:
* - C : Concrete candidate collection type
*
Expand All @@ -31,12 +31,12 @@ class ShallowCloneProducer : public edm::EDProducer {
/// process an event
virtual void produce( edm::Event&, const edm::EventSetup& );
/// labels of the collection to be converted
edm::InputTag src_;
edm::EDGetTokenT<C> srcToken_;
};

template<typename C>
ShallowCloneProducer<C>::ShallowCloneProducer( const edm::ParameterSet& par ) :
src_( par.template getParameter<edm::InputTag>( "src" ) ) {
ShallowCloneProducer<C>::ShallowCloneProducer( const edm::ParameterSet& par ) :
srcToken_( consumes<C>(par.template getParameter<edm::InputTag>( "src" ) ) ) {
produces<reco::CandidateCollection>();
}

Expand All @@ -48,7 +48,7 @@ template<typename C>
void ShallowCloneProducer<C>::produce( edm::Event& evt, const edm::EventSetup& ) {
std::auto_ptr<reco::CandidateCollection> coll( new reco::CandidateCollection );
edm::Handle<C> masterCollection;
evt.getByLabel( src_, masterCollection );
evt.getByToken( srcToken_, masterCollection );
for( size_t i = 0; i < masterCollection->size(); ++i ) {
reco::CandidateBaseRef masterClone( edm::Ref<C>( masterCollection, i ) );
coll->push_back( new reco::ShallowCloneCandidate( masterClone ) );
Expand Down
8 changes: 4 additions & 4 deletions CommonTools/CandAlgos/plugins/CandCollectionExistFilter.cc
Expand Up @@ -8,18 +8,18 @@ using namespace edm;
using namespace reco;

class CandCollectionExistFilter : public EDFilter {
public:
public:
CandCollectionExistFilter(const ParameterSet & cfg) :
src_(cfg.getParameter<InputTag>("src")) { }
srcToken_(consumes<CandidateView>(cfg.getParameter<InputTag>("src"))) { }
private:
bool filter(Event& evt, const EventSetup&) override {
Handle<CandidateView> src;
bool exists = true;
evt.getByLabel(src_, src);
evt.getByToken(srcToken_, src);
if(!src.isValid()) exists = false;
return exists;
}
InputTag src_;
EDGetTokenT<CandidateView> srcToken_;
};

#include "FWCore/Framework/interface/MakerMacros.h"
Expand Down
12 changes: 6 additions & 6 deletions CommonTools/CandAlgos/plugins/CandReducer.cc
Expand Up @@ -3,10 +3,10 @@
* Given a collectin of candidates, produced a
* collection of LeafCandidas identical to the
* source collection, but removing all daughters
* and all components.
* and all components.
*
* This is ment to produce a "light" collection
* of candiadates just containing kimenatics
* of candiadates just containing kimenatics
* information for very fast analysis purpose
*
* \author Luca Lista, INFN
Expand All @@ -18,6 +18,7 @@
*/
#include "FWCore/Framework/interface/EDProducer.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "DataFormats/Candidate/interface/Candidate.h"

class CandReducer : public edm::EDProducer {
public:
Expand All @@ -29,20 +30,19 @@ class CandReducer : public edm::EDProducer {
/// process one evevnt
void produce( edm::Event& evt, const edm::EventSetup& ) override;
/// label of source candidate collection
edm::InputTag src_;
edm::EDGetTokenT<reco::CandidateView> srcToken_;
};

#include "FWCore/Framework/interface/Event.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "DataFormats/Candidate/interface/Candidate.h"
#include "DataFormats/Candidate/interface/LeafCandidate.h"
#include "FWCore/Utilities/interface/EDMException.h"

using namespace reco;
using namespace edm;

CandReducer::CandReducer( const edm::ParameterSet& cfg ) :
src_( cfg.getParameter<edm::InputTag>("src") ) {
srcToken_( consumes<reco::CandidateView>(cfg.getParameter<edm::InputTag>("src") ) ) {
produces<CandidateCollection>();
}

Expand All @@ -51,7 +51,7 @@ CandReducer::~CandReducer() {

void CandReducer::produce( Event& evt, const EventSetup& ) {
Handle<reco::CandidateView> cands;
evt.getByLabel( src_, cands );
evt.getByToken( srcToken_, cands );
std::auto_ptr<CandidateCollection> comp( new CandidateCollection );
for( reco::CandidateView::const_iterator c = cands->begin(); c != cands->end(); ++c ) {
std::auto_ptr<Candidate> cand( new LeafCandidate( * c ) );
Expand Down
11 changes: 6 additions & 5 deletions CommonTools/CandAlgos/plugins/CandViewRefMerger.cc
@@ -1,5 +1,5 @@
/* \class CandViewRefMerger
*
*
* Producer of merged references to Candidates
*
* \author: Luca Lista, INFN
Expand All @@ -11,27 +11,28 @@
#include "FWCore/Framework/interface/EDProducer.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Utilities/interface/transform.h"
#include "DataFormats/Common/interface/Handle.h"

class CandViewRefMerger : public edm::EDProducer {
public:
explicit CandViewRefMerger(const edm::ParameterSet& cfg) :
src_(cfg.getParameter<std::vector<edm::InputTag> >("src")) {
srcTokens_(edm::vector_transform(cfg.getParameter<std::vector<edm::InputTag> >("src"), [this](edm::InputTag const & tag){return consumes<reco::CandidateView>(tag);})) {
produces<std::vector<reco::CandidateBaseRef> >();
}
private:
void produce(edm::Event & evt, const edm::EventSetup &) override {
std::auto_ptr<std::vector<reco::CandidateBaseRef> > out(new std::vector<reco::CandidateBaseRef>);
for(std::vector<edm::InputTag>::const_iterator i = src_.begin(); i != src_.end(); ++i) {
for(std::vector<edm::EDGetTokenT<reco::CandidateView> >::const_iterator i = srcTokens_.begin(); i != srcTokens_.end(); ++i) {
edm::Handle<reco::CandidateView> src;
evt.getByLabel(*i, src);
evt.getByToken(*i, src);
reco::CandidateBaseRefVector refs = src->refVector();
for(reco::CandidateBaseRefVector::const_iterator j = refs.begin(); j != refs.end(); ++j)
out->push_back(*j);
}
evt.put(out);
}
std::vector<edm::InputTag> src_;
std::vector<edm::EDGetTokenT<reco::CandidateView> > srcTokens_;
};

DEFINE_FWK_MODULE(CandViewRefMerger);