77 desc.
add(
"MuonTrackingRegionBuilder",descTRB);
98 vtx = pvHandle->front();
101 edm::LogInfo(category) <<
"No Primary Vertex available from EventSetup \n";
111 edm::LogInfo(category) <<
"No beam spot available from EventSetup \n";
130 std::vector<TrackCand> trackerTracks;
133 LogDebug(category) <<
"Found " << regionalTkTracks.size() <<
" tracks within region of interest";
138 LogDebug(category) <<
"Found " << trackerTracks.size() <<
" matching tracker tracks within region of interest";
143 LogDebug(category) <<
"turn tkMatchedTracks into MuonCandidates";
145 for (std::vector<TrackCand>::const_iterator tkt = trackerTracks.begin(); tkt != trackerTracks.end(); tkt++) {
146 if ((*tkt).first != 0 && (*tkt).first->isValid()) {
148 tkTrajs.push_back(muonCand);
151 tkTrajs.push_back(muonCand);
155 if ( tkTrajs.empty() ) {
156 LogDebug(category) <<
"tkTrajs empty";
161 LogDebug(category) <<
"Found "<< result.size() <<
" L3Muons from one L2Cand";
164 if ( staCandIn.first == 0)
delete staCand.first;
166 for( CandidateContainer::const_iterator it = tkTrajs.begin(); it != tkTrajs.end(); ++it) {
167 if ( (*it)->trajectory() )
delete (*it)->trajectory();
168 if ( (*it)->trackerTrajectory() )
delete (*it)->trackerTrajectory();
169 if ( *it )
delete (*it);
173 for ( std::vector<TrackCand>::const_iterator is = regionalTkTracks.begin(); is != regionalTkTracks.end(); ++is) {
186 std::vector<TrackCand> tkCandColl;
187 std::vector<TrackCand> tkTrackCands;
194 tkCandColl.push_back(tkCand);
198 for (
auto&& tkCand: tkCandColl){
199 auto& tk = tkCand.second;
200 bool canUseL3MTS =
false;
202 if (tk->seedRef().isNonnull()){
204 canUseL3MTS =
a !=
nullptr;
210 if( staTrack == (staCand.second) ) {
216 tkTrackCands.push_back(tkCand);
225 tkTrackCands.push_back(tkCand);
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
MuonCandidate::CandidateContainer CandidateContainer
GlobalMuonTrackMatcher * trackMatcher() const
virtual void setEvent(const edm::Event &)
pass the Event to the algo at each event
std::pair< const Trajectory *, reco::TrackRef > TrackCand
std::vector< Track > TrackCollection
collection of Tracks
static void fillDescriptions(edm::ParameterSetDescription &descriptions)
Add default values for fillDescriptions.
const Point & position() const
position
virtual void setEvent(const edm::Event &)
Pass the Event to the algo at each event.
U second(std::pair< T, U > const &p)
edm::Handle< reco::TrackCollection > allTrackerTracks
edm::Handle< reco::VertexCollection > pvHandle
edm::InputTag theTkCollName
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::vector< MuonCandidate * > CandidateContainer
double match(const TrackCand &sta, const TrackCand &track, int matchOption=0, int surfaceOption=1) const
~L3MuonTrajectoryBuilder()
Destructor.
MuonTrajectoryBuilder::CandidateContainer trajectories(const TrackCand &)
return a container reconstructed muons starting from a given track
edm::EDGetTokenT< reco::TrackCollection > theTrackToken
MuonTrajectoryBuilder::CandidateContainer build(const TrackCand &, MuonTrajectoryBuilder::CandidateContainer &) const
build combined trajectory from sta Track and tracker RecHits
edm::InputTag theBeamSpotInputTag
TrajectoryCleaner * theTrajectoryCleaner
std::vector< TrackCand > makeTkCandCollection(const TrackCand &)
Make a TrackCand collection using tracker Track, Trajectory information.
edm::Handle< reco::BeamSpot > beamSpotHandle
static int position[264][3]
const Point & position() const
position
L3MuonTrajectoryBuilder(const edm::ParameterSet &, const MuonServiceProxy *, edm::ConsumesCollector &)
Constructor with Parameter Set and MuonServiceProxy.
static void fillDescriptionsHLT(edm::ParameterSetDescription &descriptions)
edm::InputTag theVertexCollInputTag