#include <ShallowSimTracksProducer.h>
Public Member Functions | |
ShallowSimTracksProducer (const edm::ParameterSet &) | |
Private Member Functions | |
void | produce (edm::Event &, const edm::EventSetup &) |
Private Attributes | |
const edm::ESInputTag | associator_tag |
const std::string | Prefix |
const std::string | Suffix |
const edm::InputTag | trackingParticles_tag |
const edm::InputTag | tracks_tag |
Definition at line 9 of file ShallowSimTracksProducer.h.
ShallowSimTracksProducer::ShallowSimTracksProducer | ( | const edm::ParameterSet & | conf | ) | [explicit] |
Definition at line 13 of file ShallowSimTracksProducer.cc.
References Prefix, and Suffix.
: Prefix( conf.getParameter<std::string>("Prefix") ), Suffix( conf.getParameter<std::string>("Suffix") ), trackingParticles_tag( conf.getParameter<edm::InputTag>("TrackingParticles")), associator_tag( conf.getParameter<edm::ESInputTag>("Associator")), tracks_tag( conf.getParameter<edm::InputTag>("Tracks")) { produces <std::vector<unsigned> > ( Prefix + "multi" + Suffix ); produces <std::vector<int> > ( Prefix + "type" + Suffix ); produces <std::vector<float> > ( Prefix + "charge" + Suffix ); produces <std::vector<float> > ( Prefix + "momentum" + Suffix ); produces <std::vector<float> > ( Prefix + "pt" + Suffix ); produces <std::vector<double> > ( Prefix + "theta" + Suffix ); produces <std::vector<double> > ( Prefix + "phi" + Suffix ); produces <std::vector<double> > ( Prefix + "eta" + Suffix ); produces <std::vector<double> > ( Prefix + "qoverp" + Suffix ); produces <std::vector<double> > ( Prefix + "vx" + Suffix ); produces <std::vector<double> > ( Prefix + "vy" + Suffix ); produces <std::vector<double> > ( Prefix + "vz" + Suffix ); }
void ShallowSimTracksProducer::produce | ( | edm::Event & | event, |
const edm::EventSetup & | setup | ||
) | [private, virtual] |
Implements edm::EDProducer.
Definition at line 36 of file ShallowSimTracksProducer.cc.
References associator_tag, edm::AssociationMap< Tag >::begin(), ParticleBase::charge(), DeDxDiscriminatorTools::charge(), edm::AssociationMap< edm::OneToManyWithQualityGeneric< edm::View< reco::Track >, TrackingParticleCollection, double > >::const_iterator, edm::AssociationMap< Tag >::end(), ParticleBase::eta(), eta(), shallow::findTrackIndex(), edm::EventSetup::get(), edm::Ref< C, T, F >::get(), i, trackerHitRTTI::multi, ParticleBase::p(), TrackingParticle::parentVertex(), TrackingParticle::pdgId(), ParticleBase::phi(), phi, TrackingVertex::position(), Prefix, ParticleBase::pt(), findQualityFiles::size, Suffix, theta(), ParticleBase::theta(), trackingParticlesFastSim_cfi::trackingParticles, trackingParticles_tag, testEve_cfg::tracks, and tracks_tag.
{ edm::Handle<edm::View<reco::Track> > tracks ; event.getByLabel( tracks_tag, tracks); edm::Handle<TrackingParticleCollection> trackingParticles ; event.getByLabel( trackingParticles_tag, trackingParticles ); edm::ESHandle<TrackAssociatorBase> associator ; setup.get<TrackAssociatorRecord>().get( associator_tag, associator); unsigned size = tracks->size(); std::auto_ptr<std::vector<unsigned> > multi ( new std::vector<unsigned>(size, 0)); std::auto_ptr<std::vector<int> > type ( new std::vector<int> (size, 0)); std::auto_ptr<std::vector<float> > charge ( new std::vector<float> (size, 0)); std::auto_ptr<std::vector<float> > momentum ( new std::vector<float> (size, -1)); std::auto_ptr<std::vector<float> > pt ( new std::vector<float> (size, -1)); std::auto_ptr<std::vector<double> > theta ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > phi ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > eta ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > dxy ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > dsz ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > qoverp ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > vx ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > vy ( new std::vector<double> (size,-1000)); std::auto_ptr<std::vector<double> > vz ( new std::vector<double> (size,-1000)); reco::RecoToSimCollection associations = associator->associateRecoToSim( tracks, trackingParticles, &event ); for( reco::RecoToSimCollection::const_iterator association = associations.begin(); association != associations.end(); association++) { const reco::Track* track = association->key.get(); const int matches = association->val.size(); if(matches>0) { const TrackingParticle* tparticle = association->val[0].first.get(); unsigned i = shallow::findTrackIndex(tracks, track); multi->at(i) = matches; type->at(i) = tparticle->pdgId(); charge->at(i)= tparticle->charge(); momentum->at(i)=tparticle->p() ; pt->at(i) = tparticle->pt() ; theta->at(i) = tparticle->theta() ; phi->at(i) = tparticle->phi() ; eta->at(i) = tparticle->eta() ; qoverp->at(i)= tparticle->charge()/tparticle->p(); const TrackingVertex* tvertex = tparticle->parentVertex().get(); vx->at(i) = tvertex->position().x(); vy->at(i) = tvertex->position().y(); vz->at(i) = tvertex->position().z(); } } event.put( multi ,Prefix + "multi" + Suffix ); event.put( type ,Prefix + "type" + Suffix ); event.put( charge ,Prefix + "charge" + Suffix ); event.put( momentum ,Prefix + "momentum" + Suffix ); event.put( pt ,Prefix + "pt" + Suffix ); event.put( theta ,Prefix + "theta" + Suffix ); event.put( phi ,Prefix + "phi" + Suffix ); event.put( eta ,Prefix + "eta" + Suffix ); event.put( qoverp ,Prefix + "qoverp" + Suffix ); event.put( vx ,Prefix + "vx" + Suffix ); event.put( vy ,Prefix + "vy" + Suffix ); event.put( vz ,Prefix + "vz" + Suffix ); }
const edm::ESInputTag ShallowSimTracksProducer::associator_tag [private] |
Definition at line 20 of file ShallowSimTracksProducer.h.
Referenced by produce().
const std::string ShallowSimTracksProducer::Prefix [private] |
Definition at line 17 of file ShallowSimTracksProducer.h.
Referenced by produce(), and ShallowSimTracksProducer().
const std::string ShallowSimTracksProducer::Suffix [private] |
Definition at line 18 of file ShallowSimTracksProducer.h.
Referenced by produce(), and ShallowSimTracksProducer().
const edm::InputTag ShallowSimTracksProducer::trackingParticles_tag [private] |
Definition at line 19 of file ShallowSimTracksProducer.h.
Referenced by produce().
const edm::InputTag ShallowSimTracksProducer::tracks_tag [private] |
Definition at line 21 of file ShallowSimTracksProducer.h.
Referenced by produce().