Skip to content

Commit

Permalink
Merge pull request #7483 from rappoccio/RecoJetsFromMiniAOD
Browse files Browse the repository at this point in the history
Backport of 7482 (Run jet reco properly on miniAOD)
  • Loading branch information
cmsbuild committed Mar 2, 2015
2 parents d54f7f6 + f5ef097 commit 9f7dfaa
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 9 deletions.
1 change: 1 addition & 0 deletions CommonTools/RecoAlgos/plugins/BuildFile.xml
Expand Up @@ -10,6 +10,7 @@
<use name="DataFormats/MuonReco"/>
<use name="DataFormats/JetReco"/>
<use name="DataFormats/METReco"/>
<use name="DataFormats/PatCandidates"/>
<use name="DataFormats/HcalRecHit"/>
<use name="SimDataFormats/TrackingAnalysis"/>
<use name="TrackingTools/PatternTools"/>
Expand Down
12 changes: 9 additions & 3 deletions CommonTools/RecoAlgos/plugins/JetConstituentSelector.cc
Expand Up @@ -20,19 +20,21 @@

#include "DataFormats/JetReco/interface/Jet.h"
#include "DataFormats/JetReco/interface/PFJet.h"
#include "DataFormats/PatCandidates/interface/Jet.h"
#include "DataFormats/PatCandidates/interface/PackedCandidate.h"
#include "DataFormats/JetReco/interface/CaloJet.h"

#include "FWCore/Framework/interface/MakerMacros.h"
#include "CommonTools/UtilAlgos/interface/StringCutObjectSelector.h"
#include "FWCore/Framework/interface/Event.h"

template < class T >
template < class T, typename C = std::vector<typename T::ConstituentTypeFwdPtr> >
class JetConstituentSelector : public edm::EDFilter {

public:

typedef std::vector<T> JetsOutput;
typedef std::vector<typename T::ConstituentTypeFwdPtr> ConstituentsOutput;
typedef C ConstituentsOutput;

JetConstituentSelector ( edm::ParameterSet const & params ) :
srcToken_( consumes< typename edm::View<T> >( params.getParameter<edm::InputTag>("src") ) ),
Expand Down Expand Up @@ -67,7 +69,7 @@ class JetConstituentSelector : public edm::EDFilter {
// Add the jets that pass to the output collection
jets->push_back( *ijet );
for ( unsigned int ida = 0; ida < ijet->numberOfDaughters(); ++ida ) {
candsOut->push_back( typename ConstituentsOutput::value_type( ijet->getPFConstituent(ida), ijet->getPFConstituent(ida) ) );
candsOut->push_back( typename ConstituentsOutput::value_type( ijet->daughterPtr(ida), ijet->daughterPtr(ida) ) );
}
}
}
Expand All @@ -93,5 +95,9 @@ class JetConstituentSelector : public edm::EDFilter {
};

typedef JetConstituentSelector<reco::PFJet> PFJetConstituentSelector;
typedef JetConstituentSelector<pat::Jet, std::vector< edm::FwdPtr<pat::PackedCandidate> > > PatJetConstituentSelector;
typedef JetConstituentSelector<reco::PFJet, std::vector< edm::FwdPtr<pat::PackedCandidate> > > MiniAODJetConstituentSelector;

DEFINE_FWK_MODULE( PFJetConstituentSelector );
DEFINE_FWK_MODULE( PatJetConstituentSelector );
DEFINE_FWK_MODULE( MiniAODJetConstituentSelector );
6 changes: 6 additions & 0 deletions DataFormats/PatCandidates/src/classes_def_objects.xml
Expand Up @@ -223,6 +223,12 @@
<class name="edm::Ptr<pat::MET>" />
<class name="edm::Ptr<pat::Conversion>" />

<class name="edm::FwdPtr<pat::PackedCandidate>" />
<class name="std::vector<edm::FwdPtr<pat::PackedCandidate> >" />
<class name="edm::Wrapper<edm::FwdPtr<pat::PackedCandidate> >" />
<class name="edm::Wrapper<std::vector<edm::FwdPtr<pat::PackedCandidate> > >" />


<!-- PAT Object Collections -->
<class name="std::vector<pat::Electron>" />
<class name="std::vector<pat::Muon>" />
Expand Down
6 changes: 6 additions & 0 deletions DataFormats/PatCandidates/src/classes_objects.h
Expand Up @@ -2,6 +2,7 @@
#include "DataFormats/Common/interface/Association.h"
#include "DataFormats/Common/interface/Wrapper.h"
#include "DataFormats/Common/interface/PtrVector.h"
#include "DataFormats/Common/interface/FwdPtr.h"

#include "DataFormats/PatCandidates/interface/Electron.h"
#include "DataFormats/PatCandidates/interface/Muon.h"
Expand Down Expand Up @@ -165,6 +166,11 @@ namespace DataFormats_PatCandidates {
edm::Ptr<pat::Muon> ptr_Muon;
edm::Ptr<pat::Tau> ptr_Tau;

edm::FwdPtr<pat::PackedCandidate> fwdptr_pc;
edm::Wrapper< edm::FwdPtr<pat::PackedCandidate> > w_fwdptr_pc;
std::vector< edm::FwdPtr<pat::PackedCandidate> > v_fwdptr_pc;
edm::Wrapper< std::vector< edm::FwdPtr<pat::PackedCandidate> > > wv_fwdptr_pc;

edm::Wrapper<edm::Association<pat::PackedCandidateCollection > > w_asso_pc;
edm::Wrapper<edm::Association<reco::PFCandidateCollection > > w_asso_pfc;
edm::Wrapper<edm::Association<std::vector<pat::PackedGenParticle> > > asso_pgp;
Expand Down
1 change: 1 addition & 0 deletions DataFormats/PatCandidates/src/classes_user.h
Expand Up @@ -34,6 +34,7 @@ namespace DataFormats_PatCandidates {
pat::UserHolder<AlgebraicVector5> p_udh_vec_5;
pat::UserHolder<reco::Track> p_udh_tk;
pat::UserHolder<reco::Vertex> p_udh_vtx;
pat::UserHolder<std::vector<unsigned int> > p_udh_vunit;

};

Expand Down
26 changes: 20 additions & 6 deletions RecoJets/JetProducers/plugins/VirtualJetProducer.cc
Expand Up @@ -282,6 +282,7 @@ VirtualJetProducer::VirtualJetProducer(const edm::ParameterSet& iConfig)
if (!srcPVs_.label().empty()) input_vertex_token_ = consumes<reco::VertexCollection>(srcPVs_);
input_candidateview_token_ = consumes<reco::CandidateView>(src_);
input_candidatefwdptr_token_ = consumes<std::vector<edm::FwdPtr<reco::PFCandidate> > >(src_);
input_packedcandidatefwdptr_token_ = consumes<std::vector<edm::FwdPtr<pat::PackedCandidate> > >(src_);

}

Expand Down Expand Up @@ -340,20 +341,33 @@ void VirtualJetProducer::produce(edm::Event& iEvent,const edm::EventSetup& iSetu
edm::Handle<reco::CandidateView> inputsHandle;

edm::Handle< std::vector<edm::FwdPtr<reco::PFCandidate> > > pfinputsHandleAsFwdPtr;
edm::Handle< std::vector<edm::FwdPtr<pat::PackedCandidate> > > packedinputsHandleAsFwdPtr;

bool isView = iEvent.getByToken(input_candidateview_token_, inputsHandle);
if ( isView ) {
for (size_t i = 0; i < inputsHandle->size(); ++i) {
inputs_.push_back(inputsHandle->ptrAt(i));
}
} else {
iEvent.getByToken(input_candidatefwdptr_token_, pfinputsHandleAsFwdPtr);
for (size_t i = 0; i < pfinputsHandleAsFwdPtr->size(); ++i) {
if ( (*pfinputsHandleAsFwdPtr)[i].ptr().isAvailable() ) {
inputs_.push_back( (*pfinputsHandleAsFwdPtr)[i].ptr() );
bool isPF = iEvent.getByToken(input_candidatefwdptr_token_, pfinputsHandleAsFwdPtr);
if ( isPF ) {
for (size_t i = 0; i < pfinputsHandleAsFwdPtr->size(); ++i) {
if ( (*pfinputsHandleAsFwdPtr)[i].ptr().isAvailable() ) {
inputs_.push_back( (*pfinputsHandleAsFwdPtr)[i].ptr() );
}
else if ( (*pfinputsHandleAsFwdPtr)[i].backPtr().isAvailable() ) {
inputs_.push_back( (*pfinputsHandleAsFwdPtr)[i].backPtr() );
}
}
else if ( (*pfinputsHandleAsFwdPtr)[i].backPtr().isAvailable() ) {
inputs_.push_back( (*pfinputsHandleAsFwdPtr)[i].backPtr() );
} else {
iEvent.getByToken(input_packedcandidatefwdptr_token_, packedinputsHandleAsFwdPtr);
for (size_t i = 0; i < packedinputsHandleAsFwdPtr->size(); ++i) {
if ( (*packedinputsHandleAsFwdPtr)[i].ptr().isAvailable() ) {
inputs_.push_back( (*packedinputsHandleAsFwdPtr)[i].ptr() );
}
else if ( (*packedinputsHandleAsFwdPtr)[i].backPtr().isAvailable() ) {
inputs_.push_back( (*packedinputsHandleAsFwdPtr)[i].backPtr() );
}
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions RecoJets/JetProducers/plugins/VirtualJetProducer.h
Expand Up @@ -12,6 +12,7 @@
#include "DataFormats/JetReco/interface/PFJet.h"
#include "DataFormats/JetReco/interface/BasicJet.h"
#include "DataFormats/JetReco/interface/GenJet.h"
#include "DataFormats/PatCandidates/interface/PackedCandidate.h"

#include "RecoJets/JetProducers/interface/PileUpSubtractor.h"
#include "RecoJets/JetProducers/interface/AnomalousTower.h"
Expand Down Expand Up @@ -208,6 +209,7 @@ class dso_hidden VirtualJetProducer : public edm::stream::EDProducer<>
// tokens for the data access
edm::EDGetTokenT<reco::CandidateView> input_candidateview_token_;
edm::EDGetTokenT<std::vector<edm::FwdPtr<reco::PFCandidate> > > input_candidatefwdptr_token_;
edm::EDGetTokenT<std::vector<edm::FwdPtr<pat::PackedCandidate> > > input_packedcandidatefwdptr_token_;

protected:
edm::EDGetTokenT<reco::VertexCollection> input_vertex_token_;
Expand Down

0 comments on commit 9f7dfaa

Please sign in to comment.