CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoJets/JetAssociationProducers/src/JetTracksAssociatorExplicit.cc

Go to the documentation of this file.
00001 // \class JetTracksAssociatorExplicit JetTracksAssociatorExplicit.cc 
00002 //
00003 // Original Author:  Andrea Rizzi
00004 //         Created:  Wed Apr 12 11:12:49 CEST 2006
00005 // Accommodated for Jet Package by: Fedor Ratnikov Jul. 30, 2007
00006 // $Id: JetTracksAssociatorExplicit.cc,v 1.1 2012/01/13 21:11:04 srappocc Exp $
00007 //
00008 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00009 
00010 // user include files
00011 #include "FWCore/Framework/interface/Event.h"
00012 #include "DataFormats/Common/interface/View.h"
00013 #include "DataFormats/JetReco/interface/Jet.h"
00014 #include "DataFormats/TrackReco/interface/Track.h"
00015 #include "DataFormats/JetReco/interface/JetTracksAssociation.h"
00016 
00017 #include "JetTracksAssociatorExplicit.h"
00018 
00019 JetTracksAssociatorExplicit::JetTracksAssociatorExplicit(const edm::ParameterSet& fConfig)
00020   : mJets (fConfig.getParameter<edm::InputTag> ("jets")),
00021     mTracks (fConfig.getParameter<edm::InputTag> ("tracks")),
00022     mAssociatorExplicit ()
00023 {
00024 
00025   produces<reco::JetTracksAssociation::Container> ();
00026 }
00027 
00028 JetTracksAssociatorExplicit::~JetTracksAssociatorExplicit() {}
00029 
00030 void JetTracksAssociatorExplicit::produce(edm::Event& fEvent, const edm::EventSetup& fSetup) {
00031   edm::Handle <edm::View <reco::Jet> > jets_h;
00032   fEvent.getByLabel (mJets, jets_h);
00033   edm::Handle <reco::TrackCollection> tracks_h;
00034   fEvent.getByLabel (mTracks, tracks_h);
00035   
00036   std::auto_ptr<reco::JetTracksAssociation::Container> jetTracks (new reco::JetTracksAssociation::Container (reco::JetRefBaseProd(jets_h)));
00037 
00038   // format inputs
00039   std::vector <edm::RefToBase<reco::Jet> > allJets;
00040   allJets.reserve (jets_h->size());
00041   for (unsigned i = 0; i < jets_h->size(); ++i) allJets.push_back (jets_h->refAt(i));
00042   std::vector <reco::TrackRef> allTracks;
00043   allTracks.reserve (tracks_h->size());
00044   // run algo
00045   for (unsigned i = 0; i < tracks_h->size(); ++i) {
00046     allTracks.push_back (reco::TrackRef (tracks_h, i));
00047   }
00048 
00049 
00050   mAssociatorExplicit.produce (&*jetTracks, allJets, allTracks);
00051 
00052 
00053   // store output
00054   fEvent.put (jetTracks);
00055 }