diff --git a/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.cc b/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.cc index 2de1698640d80..250e08e367897 100644 --- a/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.cc +++ b/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.cc @@ -1,98 +1,74 @@ -#include "Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" - -#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" -#include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h" - -//#define ALLrecHits -//#define DEBUG - -//#define QUICK -> if commented loop over the recHits of the SC and add them to the list of recHits to be saved -// comment it if you want a faster module but be sure the window is large enough - -AlCaElectronTracksReducer::AlCaElectronTracksReducer(const edm::ParameterSet& iConfig) -{ - - //gsfTracksLabel_ = iConfig.getParameter< edm::InputTag > ("gsfTracksLabel"); - generalTracksLabel_ = iConfig.getParameter< edm::InputTag > ("generalTracksLabel"); - generalTracksExtraLabel_ = iConfig.getParameter< edm::InputTag > ("generalTracksExtraLabel"); - electronLabel_ = iConfig.getParameter< edm::InputTag > ("electronLabel"); - - // name of the output collection - //gsfTracksCollection_ = iConfig.getParameter("gsfTracksCollection"); - alcaTrackExtraCollection_ = iConfig.getParameter("alcaTrackExtraCollection"); - - //register your products - produces< reco::TrackCollection > (alcaTrackCollection_) ; - produces< reco::TrackExtraCollection > (alcaTrackExtraCollection_) ; - -} - - -AlCaElectronTracksReducer::~AlCaElectronTracksReducer() -{} - - -// ------------ method called to produce the data ------------ -void AlCaElectronTracksReducer::produce (edm::Event& iEvent, - const edm::EventSetup& iSetup) -{ - using namespace edm; - using namespace std; - using namespace reco; - - // get the ECAL geometry: -// ESHandle geoHandle; -// iSetup.get().get(geoHandle); - -// edm::ESHandle theCaloTopology; -// iSetup.get().get(theCaloTopology); -// const CaloTopology *caloTopology = theCaloTopology.product(); - - // Get GSFElectrons - Handle pElectrons; - iEvent.getByLabel(electronLabel_, pElectrons); -// if (!pElectrons.isValid()) { -// edm::LogError ("reading") << electronLabel_ << " not found" ; -// return ; -// } - - const reco::GsfElectronCollection * electronCollection = - pElectrons.product(); - - Handle generalTracksHandle; - iEvent.getByLabel(generalTracksLabel_,generalTracksHandle); - - Handle generalTracksExtraHandle; - iEvent.getByLabel(generalTracksExtraLabel_,generalTracksExtraHandle); - - //Create empty output collections - std::auto_ptr< TrackCollection > redGeneralTracksCollection (new TrackCollection) ; - std::auto_ptr< TrackExtraCollection > redGeneralTracksExtraCollection (new TrackExtraCollection) ; - - reco::GsfElectronCollection::const_iterator eleIt; - - for (eleIt=electronCollection->begin(); eleIt!=electronCollection->end(); eleIt++) { - // barrel -#ifndef CMSSW42X - TrackRef track = (eleIt-> closestTrack() ) ; -#else - TrackRef track = (eleIt-> closestCtfTrackRef()); -#endif - if(track.isNull()){ - // edm::LogError("track") << "Track Ref not found " << eleIt->energy() << "\t" << eleIt->eta(); - continue; - } - redGeneralTracksCollection->push_back(*track); - if(generalTracksExtraHandle.isValid()) redGeneralTracksExtraCollection->push_back(*(track->extra())); - } - - //Put selected information in the event - iEvent.put( redGeneralTracksCollection, alcaTrackCollection_ ); - iEvent.put( redGeneralTracksExtraCollection, alcaTrackExtraCollection_ ); -} - - -DEFINE_FWK_MODULE(AlCaElectronTracksReducer); - +#include "Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" + +AlCaElectronTracksReducer::AlCaElectronTracksReducer(const edm::ParameterSet& iConfig) +{ + generalTracksToken_ = consumes(iConfig.getParameter< edm::InputTag > ("generalTracksLabel")); + generalTracksExtraToken_ = consumes(iConfig.getParameter< edm::InputTag > ("generalTracksExtraLabel")); + electronToken_ = consumes(iConfig.getParameter< edm::InputTag > ("electronLabel")); + + // name of the output collection + alcaTrackExtraCollection_ = iConfig.getParameter("alcaTrackExtraCollection"); + + //register your products + produces< reco::TrackCollection > (alcaTrackCollection_) ; + produces< reco::TrackExtraCollection > (alcaTrackExtraCollection_) ; + +} + + +AlCaElectronTracksReducer::~AlCaElectronTracksReducer() +{} + + +// ------------ method called to produce the data ------------ +void AlCaElectronTracksReducer::produce (edm::Event& iEvent, + const edm::EventSetup& iSetup) +{ + using namespace edm; + using namespace std; + using namespace reco; + + + // Get GSFElectrons + Handle pElectrons; + iEvent.getByToken(electronToken_, pElectrons); + + const reco::GsfElectronCollection * electronCollection = pElectrons.product(); + + Handle generalTracksHandle; + iEvent.getByToken(generalTracksToken_,generalTracksHandle); + + Handle generalTracksExtraHandle; + iEvent.getByToken(generalTracksExtraToken_,generalTracksExtraHandle); + + //Create empty output collections + std::auto_ptr< TrackCollection > redGeneralTracksCollection (new TrackCollection) ; + std::auto_ptr< TrackExtraCollection > redGeneralTracksExtraCollection (new TrackExtraCollection) ; + + reco::GsfElectronCollection::const_iterator eleIt; + + for (eleIt=electronCollection->begin(); eleIt!=electronCollection->end(); eleIt++) { + // barrel +#ifndef CMSSW42X + TrackRef track = (eleIt-> closestTrack() ) ; +#else + TrackRef track = (eleIt-> closestCtfTrackRef()); +#endif + if(track.isNull()){ + // edm::LogError("track") << "Track Ref not found " << eleIt->energy() << "\t" << eleIt->eta(); + continue; + } + redGeneralTracksCollection->push_back(*track); + if(generalTracksExtraHandle.isValid()) redGeneralTracksExtraCollection->push_back(*(track->extra())); + } + + //Put selected information in the event + iEvent.put( redGeneralTracksCollection, alcaTrackCollection_ ); + iEvent.put( redGeneralTracksExtraCollection, alcaTrackExtraCollection_ ); +} + + +DEFINE_FWK_MODULE(AlCaElectronTracksReducer); + diff --git a/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.h b/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.h index e4aefadbd346c..54e71a215b8fc 100644 --- a/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.h +++ b/Calibration/EcalAlCaRecoProducers/plugins/AlCaElectronTracksReducer.h @@ -8,10 +8,7 @@ // /**\class AlCaECALRecHitReducer AlCaECALRecHitReducer.cc Calibration/EcalAlCaRecoProducers/src/AlCaECALRecHitReducer.cc - Description: Example of a producer of AlCa electrons - - Implementation: - + Description: This plugin saves tracks and trackExtras that are associated to an electron creating two new track and track extra collections */ // @@ -19,7 +16,6 @@ // Created: Sat Feb 23 10:07:01 CEST 2013 // $Id: AlCaElectronTracksReducer.h,v 1.00 2013/02/23 10:10:34 shervin Exp $ // -// // system include files @@ -34,21 +30,28 @@ #include "FWCore/Utilities/interface/InputTag.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +// input collections +#include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "DataFormats/TrackReco/interface/TrackExtraFwd.h" + class AlCaElectronTracksReducer : public edm::EDProducer { public: - //! ctor + explicit AlCaElectronTracksReducer(const edm::ParameterSet&); ~AlCaElectronTracksReducer(); virtual void produce(edm::Event &, const edm::EventSetup&); - - private: + +private: // ----------member data --------------------------- + // input collections + edm::EDGetTokenT electronToken_; + edm::EDGetTokenT generalTracksToken_; + edm::EDGetTokenT generalTracksExtraToken_; - edm::InputTag electronLabel_; - edm::InputTag generalTracksLabel_; + // output collection' names std::string alcaTrackCollection_; - edm::InputTag generalTracksExtraLabel_; std::string alcaTrackExtraCollection_; }; diff --git a/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.cc b/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.cc index ca281fbc77a1e..43bad4bce78d7 100644 --- a/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.cc +++ b/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.cc @@ -1,12 +1,12 @@ #include "Calibration/EcalAlCaRecoProducers/plugins/PUDumper.h" - //! ctor PUDumper::PUDumper(const edm::ParameterSet& iConfig) { // MCPileupTag_ = iConfig.getParameter("MCPileupTag"); - + pileupSummaryToken_ = consumes >(iConfig.getParameter("pileupSummary")); + // create TTree edm::Service fs; PUTree_ = fs -> make("pileup","pileup"); @@ -39,7 +39,7 @@ void PUDumper::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) // get the PU collection edm::Handle > PupInfo; if( !iEvent.isRealData() ){ - iEvent.getByLabel(edm::InputTag("addPileupInfo"), PupInfo); ///\todo put it in the cfi! + iEvent.getByToken(pileupSummaryToken_, PupInfo); } else return; diff --git a/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.h b/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.h index d2d2bc9ba6056..72f7160a23754 100644 --- a/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.h +++ b/Calibration/EcalAlCaRecoProducers/plugins/PUDumper.h @@ -1,13 +1,15 @@ #ifndef PUDumper_h #define PUDumper_h +#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/EDAnalyzer.h" + #include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Utilities/interface/InputTag.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/ServiceRegistry/interface/Service.h" #include "CommonTools/UtilAlgos/interface/TFileService.h" #include "SimDataFormats/PileupSummaryInfo/interface/PileupSummaryInfo.h" @@ -15,7 +17,6 @@ #include "TTree.h" - class PUDumper : public edm::EDAnalyzer { public: @@ -36,7 +37,9 @@ class PUDumper : public edm::EDAnalyzer private: - + + edm::EDGetTokenT< std::vector > pileupSummaryToken_; + //edm::InputTag MCPileupTag_; TTree* PUTree_; diff --git a/Calibration/EcalAlCaRecoProducers/python/PUDumper_cfi.py b/Calibration/EcalAlCaRecoProducers/python/PUDumper_cfi.py index 2c6fc8cc7e098..ef98f57dc80ca 100644 --- a/Calibration/EcalAlCaRecoProducers/python/PUDumper_cfi.py +++ b/Calibration/EcalAlCaRecoProducers/python/PUDumper_cfi.py @@ -1,6 +1,7 @@ import FWCore.ParameterSet.Config as cms PUDumper = cms.EDAnalyzer('PUDumper', + pileupSummary = cms.InputTag("addPileupInfo"), # vertexCollection = cms.InputTag('offlinePrimaryVertices'), # foutName = cms.string("ZShervinNtuple.root"), )