30 template <
typename T1,
typename T2>
48 std::map<std::string, edm::EDGetTokenT<RecHitCollection > >
inputs_;
52 template <
typename T1,
typename T2>
54 mu_input_(consumes<edm::
View<pat::
Muon> >(iConfig.getParameter<edm::
InputTag>(
"MuonCollection")))
56 std::vector<edm::InputTag> inCollections = iConfig.
getParameter<std::vector<edm::InputTag> >(
"oldCollection");
57 for (
auto inCollection : inCollections){
58 inputs_[inCollection.instance()] = consumes<RecHitCollection >(inCollection);
59 produces<RecHitCollection>(inCollection.instance());
64 template <
typename T1,
typename T2>
70 template <
typename T1,
typename T2>
73 std::map<T1, std::vector<T2> > recHits_output;
74 std::vector<uint32_t> vetoHits;
82 if( iMuon->isGlobalMuon() ) track = iMuon->outerTrack().get();
83 else if ( iMuon->isStandAloneMuon() ) track = iMuon->outerTrack().get();
84 else if ( iMuon->isRPCMuon() ) track = iMuon->innerTrack().get();
85 else if ( iMuon->isTrackerMuon() ) track = iMuon->innerTrack().get();
87 std::cout<<
"The imput muon: "<<(*iMuon)<<
" must be either global or does or be tracker muon"<<std::endl;
94 if(!(murechit).isValid())
continue;
95 if (!checkrecHit(murechit))
continue;
96 fillVetoHits(murechit,&vetoHits);
102 for (
auto input_ : inputs_){
105 RecHitCollectionHandle RecHitinput;
106 iEvent.
getByToken(input_.second, RecHitinput);
109 if (
find(vetoHits.begin(),vetoHits.end(),getRawDetId(*recHit)) != vetoHits.end())
continue;
110 T1 detId(getRawDetId(*recHit));
111 recHits_output[detId].push_back(*recHit);
118 for (
typename std::map<T1, std::vector<T2> >::const_iterator recHit = recHits_output.begin(); recHit != recHits_output.end(); ++recHit ) {
119 output->put(recHit->first, recHit->second.begin(), recHit->second.end());
121 output->post_insert();
127 template <
typename T1,
typename T2>
130 std::vector<const TrackingRecHit*> rh_components = rh.
recHits();
131 if ( rh_components.size() == 0 ) {
132 HitsList->push_back(rh.
rawId());
135 for ( std::vector<const TrackingRecHit*>::const_iterator rh_component = rh_components.begin(); rh_component != rh_components.end(); ++rh_component ) {
136 fillVetoHits(**rh_component, HitsList);
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual void produce(edm::Event &, const edm::EventSetup &)
uint32_t getRawDetId(const T2 &)
bool checkrecHit(const TrackingRecHit &)
edm::RangeMap< T1, edm::OwnVector< T2 > > RecHitCollection
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
C::const_iterator const_iterator
constant access iterator type
const_iterator begin() const
std::map< std::string, edm::EDGetTokenT< RecHitCollection > > inputs_
virtual std::vector< const TrackingRecHit * > recHits() const =0
Access to component RecHits (if any)
const edm::EDGetTokenT< edm::View< pat::Muon > > mu_input_
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
MuonDetCleaner(const edm::ParameterSet &)
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
void fillVetoHits(const TrackingRecHit &, std::vector< uint32_t > *)
const_iterator end() const
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.