1 #ifndef RecoAlgos_TrackFullCloneSelectorBase_h 2 #define RecoAlgos_TrackFullCloneSelectorBase_h 37 template <
typename Selector>
49 produces<reco::TrackCollection>().setBranchAlias(
alias +
"Tracks");
51 produces<reco::TrackExtraCollection>().setBranchAlias(
alias +
"TrackExtras");
52 produces<TrackingRecHitCollection>().setBranchAlias(
alias +
"RecHits");
54 produces<std::vector<Trajectory> >().setBranchAlias(
alias +
"Trajectories");
55 produces<TrajTrackAssociationCollection>().setBranchAlias(
alias +
"TrajectoryTrackAssociations");
68 selTracks_ = std::make_unique<reco::TrackCollection>();
71 selHits_ = std::make_unique<TrackingRecHitCollection>();
74 TrackRefProd rTracks = evt.template getRefBeforePut<TrackCollection>();
79 rHits = evt.template getRefBeforePut<TrackingRecHitCollection>();
80 rTrackExtras = evt.template getRefBeforePut<TrackExtraCollection>();
84 std::map<TrackRefKey, reco::TrackRef>
goodTracks;
85 TrackRefKey current = 0;
88 auto tkBegin = hSrcTrack->begin();
89 for (reco::TrackCollection::const_iterator
it = tkBegin, ed = hSrcTrack->end();
it != ed; ++
it, ++current) {
106 trk.outerStateCovariance(),
108 trk.innerStateCovariance(),
110 trk.seedDirection()));
114 auto const firstHitIndex =
selHits_->size();
115 for (
auto const&
hit :
trk.recHits())
130 selTrajs_ = std::make_unique<std::vector<Trajectory> >();
131 selTTAss_ = std::make_unique<TrajTrackAssociationCollection>();
132 for (
size_t i = 0,
n = hTraj->size();
i <
n; ++
i) {
135 if (match != hTTAss->
end()) {
137 TrackRefKey oldKey = trkRef.
key();
138 std::map<TrackRefKey, reco::TrackRef>::iterator getref =
goodTracks.find(oldKey);
172 std::unique_ptr<TrackingRecHitCollection>
selHits_;
174 std::unique_ptr<TrajTrackAssociationCollection>
selTTAss_;
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.
void produce(edm::Event &evt, const edm::EventSetup &es) override
process one event
TrackFullCloneSelectorBase(const edm::ParameterSet &cfg)
constructor
std::vector< Track > TrackCollection
collection of Tracks
edm::Ref< TrackExtraCollection > TrackExtraRef
persistent reference to a TrackExtra
bool getByToken(EDGetToken token, Handle< PROD > &result) const
key_type key() const
Accessor for product key.
const_iterator find(const key_type &k) const
find element with specified reference key
std::unique_ptr< std::vector< Trajectory > > selTrajs_
const_iterator end() const
last iterator over the map (read only)
std::unique_ptr< TrajTrackAssociationCollection > selTTAss_
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
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
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
std::unique_ptr< TrackingRecHitCollection > selHits_
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_