1 #ifndef RecoAlgos_TrackFullCloneSelectorBase_h 2 #define RecoAlgos_TrackFullCloneSelectorBase_h 35 template <
typename Selector>
47 produces<reco::TrackCollection>().setBranchAlias(alias +
"Tracks");
49 produces<reco::TrackExtraCollection>().setBranchAlias(alias +
"TrackExtras");
50 produces<TrackingRecHitCollection>().setBranchAlias(alias +
"RecHits");
52 produces<std::vector<Trajectory> >().setBranchAlias(alias +
"Trajectories");
53 produces<TrajTrackAssociationCollection>().setBranchAlias(alias +
"TrajectoryTrackAssociations");
72 TrackRefProd rTracks = evt.template getRefBeforePut<TrackCollection>();
77 rHits = evt.template getRefBeforePut<TrackingRecHitCollection>();
78 rTrackExtras = evt.template getRefBeforePut<TrackExtraCollection>();
82 std::map<TrackRefKey, reco::TrackRef>
goodTracks;
83 TrackRefKey current = 0;
86 auto tkBegin = hSrcTrack->begin();
87 for (reco::TrackCollection::const_iterator it = tkBegin, ed = hSrcTrack->end(); it != ed; ++it, ++current) {
112 auto const firstHitIndex =
selHits_->size();
128 selTrajs_ = std::unique_ptr<std::vector<Trajectory> >(
new std::vector<Trajectory>());
130 for (
size_t i = 0,
n = hTraj->size();
i <
n; ++
i) {
133 if (match != hTTAss->
end()) {
135 TrackRefKey oldKey = trkRef.
key();
136 std::map<TrackRefKey, reco::TrackRef>::iterator getref = goodTracks.find(oldKey);
137 if (getref != goodTracks.end()) {
140 selTTAss_->insert(
edm::Ref<std::vector<Trajectory> >(TrajRefProd, selTrajs_->size() - 1),
170 std::unique_ptr<TrackingRecHitCollection>
selHits_;
172 std::unique_ptr<TrajTrackAssociationCollection>
selTTAss_;
T getParameter(std::string const &) const
edm::EDGetTokenT< TrajTrackAssociationCollection > hTTAssToken_
std::remove_cv< typename std::remove_reference< argument_type >::type >::type key_type
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
const TrackExtraRef & extra() const
reference to "extra" object
friend struct const_iterator
const_iterator end() const
last iterator over the map (read only)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void produce(edm::Event &evt, const edm::EventSetup &es) override
process one event
const_iterator find(const key_type &k) const
find element with specified reference key
TrackFullCloneSelectorBase(const edm::ParameterSet &cfg)
constructor
std::vector< Track > TrackCollection
collection of Tracks
bool innerOk() const
return true if the innermost hit is valid
edm::Ref< TrackExtraCollection > TrackExtraRef
persistent reference to a TrackExtra
key_type key() const
Accessor for product key.
const math::XYZPoint & outerPosition() const
position of the outermost hit
std::unique_ptr< std::vector< Trajectory > > selTrajs_
const math::XYZPoint & innerPosition() const
position of the innermost hit
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > > TrajTrackAssociationCollection
CovarianceMatrix outerStateCovariance() const
outermost trajectory state curvilinear errors
std::unique_ptr< TrajTrackAssociationCollection > selTTAss_
unsigned int outerDetId() const
DetId of the detector on which surface the outermost state is located.
auto recHits() const
Access to reconstructed hits on the track.
def template(fileName, svg, replaceme="REPLACEME")
bool copyExtras_
copy only the tracks, not extras and rechits (for AOD)
Functor that operates on <T>
Selector selector_
filter event
~TrackFullCloneSelectorBase() override
destructor
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
edm::OwnVector< TrackingRecHit > TrackingRecHitCollection
collection of TrackingRecHits
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
bool outerOk() const
return true if the outermost hit is valid
const PropagationDirection & seedDirection() const
direction of how the hits were sorted in the original seed
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
CovarianceMatrix innerStateCovariance() const
innermost trajectory state curvilinear errors
edm::EDGetTokenT< std::vector< Trajectory > > hTrajToken_
edm::EDGetTokenT< reco::TrackCollection > hSrcTrackToken_
source collection label
std::unique_ptr< reco::TrackCollection > selTracks_
bool copyTrajectories_
copy also trajectories and trajectory->track associations
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
std::unique_ptr< TrackingRecHitCollection > selHits_
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
unsigned int innerDetId() const
DetId of the detector on which surface the innermost state is located.