Public Member Functions | |
FakeTrackProducer (const edm::ParameterSet &iConfig) | |
virtual void | produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override |
virtual | ~FakeTrackProducer () |
Private Member Functions | |
TrajectorySeed::range | getHits (const TrajectorySeed &seed) const |
TrajectorySeed::range | getHits (const TrackCandidate &seed) const |
const PTrajectoryStateOnDet & | getState (const TrajectorySeed &seed) const |
const PTrajectoryStateOnDet & | getState (const TrackCandidate &seed) const |
Private Attributes | |
edm::InputTag | src_ |
Labels for input collections. | |
edm::ESHandle< TrackerGeometry > | theGeometry |
Muon selection. | |
edm::ESHandle< MagneticField > | theMagField |
Definition at line 41 of file FakeTrackProducers.cc.
FakeTrackProducer< T >::FakeTrackProducer | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 66 of file FakeTrackProducers.cc.
: src_(iConfig.getParameter<edm::InputTag>("src")) //,selector_(iConfig.existsAs<std::string>("cut") ? iConfig.getParameter<std::string>("cut") : "", true) { produces<std::vector<reco::Track> >(); produces<std::vector<reco::TrackExtra> >(); produces<edm::OwnVector<TrackingRecHit> >(); }
virtual FakeTrackProducer< T >::~FakeTrackProducer | ( | ) | [inline, virtual] |
Definition at line 44 of file FakeTrackProducers.cc.
{ }
TrajectorySeed::range FakeTrackProducer< T >::getHits | ( | const TrajectorySeed & | seed | ) | const [inline, private] |
Definition at line 60 of file FakeTrackProducers.cc.
References TrajectorySeed::recHits().
{ return seed.recHits(); }
TrajectorySeed::range FakeTrackProducer< T >::getHits | ( | const TrackCandidate & | seed | ) | const [inline, private] |
Definition at line 61 of file FakeTrackProducers.cc.
References TrackCandidate::recHits().
{ return seed.recHits(); }
const PTrajectoryStateOnDet& FakeTrackProducer< T >::getState | ( | const TrajectorySeed & | seed | ) | const [inline, private] |
Definition at line 58 of file FakeTrackProducers.cc.
References TrajectorySeed::startingState().
{ return seed.startingState(); }
const PTrajectoryStateOnDet& FakeTrackProducer< T >::getState | ( | const TrackCandidate & | seed | ) | const [inline, private] |
Definition at line 59 of file FakeTrackProducers.cc.
References TrackCandidate::trajectoryStateOnDet().
{ return seed.trajectoryStateOnDet(); }
void FakeTrackProducer< T >::produce | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [override, virtual] |
Implements edm::EDProducer.
Definition at line 77 of file FakeTrackProducers.cc.
References reco::TrackExtraBase::add(), alongMomentum, dtNoiseDBValidation_cfg::cerr, LocalTrajectoryParameters::charge(), DeDxDiscriminatorTools::charge(), PTrajectoryStateOnDet::detId(), TrackingRecHit::geographicalId(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::Event::getRefBeforePut(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::localParameters(), TrackingRecHit::localPosition(), RPCpg::mu, dbtoconf::out, AlCaHLTBitMon_ParallelJobs::p, edm::Event::put(), DetId::rawId(), alcazmumu_cfi::src, GeomDet::surface(), std::swap(), GeomDet::toGlobal(), trajectoryStateTransform::transientState(), PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
{ using namespace edm; using namespace std; iSetup.get<TrackerDigiGeometryRecord>().get(theGeometry); iSetup.get<IdealMagneticFieldRecord>().get(theMagField); Handle<vector<T> > src; iEvent.getByLabel(src_, src); auto_ptr<vector<reco::Track> > out(new vector<reco::Track>()); out->reserve(src->size()); auto_ptr<vector<reco::TrackExtra> > outEx(new vector<reco::TrackExtra>()); outEx->reserve(src->size()); auto_ptr<OwnVector<TrackingRecHit> > outHits(new OwnVector<TrackingRecHit>()); TrackingRecHitRefProd rHits = iEvent.getRefBeforePut<TrackingRecHitCollection>(); reco::TrackExtraRefProd rTrackExtras = iEvent.getRefBeforePut<reco::TrackExtraCollection>(); for (typename vector<T>::const_iterator it = src->begin(), ed = src->end(); it != ed; ++it) { const T &mu = *it; //if (!selector_(mu)) continue; const PTrajectoryStateOnDet & pstate = getState(mu); const GeomDet *det = theGeometry->idToDet(DetId(pstate.detId())); if (det == 0) { std::cerr << "ERROR: bogus detid " << pstate.detId() << std::endl; continue; } TrajectoryStateOnSurface state = trajectoryStateTransform::transientState(pstate, & det->surface(), &*theMagField); GlobalPoint gx = state.globalPosition(); GlobalVector gp = state.globalMomentum(); reco::Track::Point x(gx.x(), gx.y(), gx.z()); reco::Track::Vector p(gp.x(), gp.y(), gp.z()); int charge = state.localParameters().charge(); out->push_back(reco::Track(1.0,1.0,x,p,charge,reco::Track::CovarianceMatrix())); TrajectorySeed::range hits = getHits(mu); out->back().setHitPattern(hits.first, hits.second); // Now Track Extra const TrackingRecHit *hit0 = &*hits.first; const TrackingRecHit *hit1 = &*(hits.second-1); const GeomDet *det0 = theGeometry->idToDet(hit0->geographicalId()); const GeomDet *det1 = theGeometry->idToDet(hit1->geographicalId()); if (det0 == 0 || det1 == 0) { std::cerr << "ERROR: bogus detids at beginning or end of range" << std::endl; continue; } GlobalPoint gx0 = det0->toGlobal(hit0->localPosition()); GlobalPoint gx1 = det1->toGlobal(hit1->localPosition()); reco::Track::Point x0(gx0.x(), gx0.y(), gx0.z()); reco::Track::Point x1(gx1.x(), gx1.y(), gx1.z()); if (x0.R() > x1.R()) std::swap(x0,x1); outEx->push_back( reco::TrackExtra(x1, p, true, x0, p, true, reco::Track::CovarianceMatrix(), hit0->geographicalId().rawId(), reco::Track::CovarianceMatrix(), hit1->geographicalId().rawId(), alongMomentum) ); out->back().setExtra( reco::TrackExtraRef( rTrackExtras, outEx->size()-1 ) ); reco::TrackExtra &ex = outEx->back(); for (OwnVector<TrackingRecHit>::const_iterator it2 = hits.first; it2 != hits.second; ++it2) { outHits->push_back(*it2); ex.add( TrackingRecHitRef( rHits, outHits->size()-1 ) ); } } iEvent.put(out); iEvent.put(outEx); iEvent.put(outHits); }
edm::InputTag FakeTrackProducer< T >::src_ [private] |
Labels for input collections.
Definition at line 49 of file FakeTrackProducers.cc.
edm::ESHandle<TrackerGeometry> FakeTrackProducer< T >::theGeometry [private] |
Muon selection.
Definition at line 55 of file FakeTrackProducers.cc.
edm::ESHandle<MagneticField> FakeTrackProducer< T >::theMagField [private] |
Definition at line 56 of file FakeTrackProducers.cc.