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) {
104 auto const firstHitIndex =
selHits_->size();
119 selTrajs_ = std::unique_ptr< std::vector<Trajectory> >(
new std::vector<Trajectory>());
121 for (
size_t i = 0,
n = hTraj->size();
i <
n; ++
i) {
124 if (match != hTTAss->
end()) {
126 TrackRefKey oldKey = trkRef.
key();
127 std::map<TrackRefKey, reco::TrackRef>::iterator getref = goodTracks.find(oldKey);
128 if (getref != goodTracks.end()) {
131 selTTAss_->insert (
edm::Ref< std::vector<Trajectory> >(TrajRefProd, selTrajs_->size() - 1),
161 std::unique_ptr<TrackingRecHitCollection>
selHits_;
163 std::unique_ptr< TrajTrackAssociationCollection >
selTTAss_;
T getParameter(std::string const &) const
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
edm::EDGetTokenT< std::vector< Trajectory > > hTrajToken_
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
const math::XYZPoint & innerPosition() const
position of the innermost hit
CovarianceMatrix outerStateCovariance() const
outermost trajectory state curvilinear errors
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)
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > > TrajTrackAssociationCollection
std::unique_ptr< TrajTrackAssociationCollection > selTTAss_
std::unique_ptr< std::vector< Trajectory > > selTrajs_
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< 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
edm::EDGetTokenT< TrajTrackAssociationCollection > hTTAssToken_
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.