Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RPCMuon bugfix in MuonIdProducer #4902

Merged
merged 8 commits into from Aug 21, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion DQMOffline/Muon/src/MuonEnergyDepositAnalyzer.cc
Expand Up @@ -186,7 +186,7 @@ void MuonEnergyDepositAnalyzer::analyze(const edm::Event& iEvent, const edm::Eve

if(recoMu->isGlobalMuon())
TransTrack = theB->build(recoMu->globalTrack());
if(recoMu->isTrackerMuon() && !(recoMu->isGlobalMuon()))
if((recoMu->isTrackerMuon() || recoMu->isRPCMuon()) && !(recoMu->isGlobalMuon()))
TransTrack = theB->build(recoMu->innerTrack());
if(recoMu->isStandAloneMuon() && !(recoMu->isGlobalMuon()))
TransTrack = theB->build(recoMu->outerTrack());
Expand Down
4 changes: 2 additions & 2 deletions RecoMET/METAlgorithms/src/MuonMETAlgo.cc
Expand Up @@ -128,7 +128,7 @@ void MuonMETAlgo::GetMuDepDeltas(const reco::Muon* inputMuon,
TrackRef mu_track;
if(inputMuon->isGlobalMuon()) {
mu_track = inputMuon->globalTrack();
} else if(inputMuon->isTrackerMuon()) {
} else if(inputMuon->isTrackerMuon() || inputMuon->isRPCMuon()) {
mu_track = inputMuon->innerTrack();
} else
mu_track = inputMuon->outerTrack();
Expand Down Expand Up @@ -174,7 +174,7 @@ void MuonMETAlgo::GetMuDepDeltas(const reco::Muon* inputMuon,
mup4 = LorentzVector(inputMuon->globalTrack()->px(), inputMuon->globalTrack()->py(),
inputMuon->globalTrack()->pz(), inputMuon->globalTrack()->p());
}
} else if(inputMuon->isTrackerMuon()) {
} else if(inputMuon->isTrackerMuon() || inputMuon->isRPCMuon()) {
mup4 = LorentzVector(inputMuon->innerTrack()->px(), inputMuon->innerTrack()->py(),
inputMuon->innerTrack()->pz(), inputMuon->innerTrack()->p());
} else
Expand Down
3 changes: 2 additions & 1 deletion RecoMET/METProducers/src/MuonMETValueMapProducer.cc
Expand Up @@ -124,7 +124,7 @@ void MuonMETValueMapProducer::determine_deltax_deltay(double& deltax, double& de
{
reco::TrackRef mu_track;
if(muon.isGlobalMuon()) mu_track = muon.globalTrack();
else if(muon.isTrackerMuon()) mu_track = muon.innerTrack();
else if(muon.isTrackerMuon()||muon.isRPCMuon()) mu_track = muon.innerTrack();
else mu_track = muon.outerTrack();

TrackDetMatchInfo info = trackAssociator_.associate(iEvent, iSetup,
Expand Down Expand Up @@ -155,6 +155,7 @@ bool MuonMETValueMapProducer::should_type_MuonCandidateValuesUsed(const reco::Mu
if(!muon.isTrackerMuon() && isAlsoTkMu_) return false;
reco::TrackRef globTk = muon.globalTrack();
reco::TrackRef siTk = muon.innerTrack();

if(muon.pt() < minPt_ || fabs(muon.eta()) > maxEta_) return false;
if(globTk->chi2()/globTk->ndof() > maxNormChi2_) return false;
if(fabs(globTk->dxy(beamSpotPosition)) > fabs(maxd0_)) return false;
Expand Down
5 changes: 3 additions & 2 deletions RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc
Expand Up @@ -587,7 +587,6 @@ void MuonIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
{
// make muon
reco::Muon trackerMuon( makeMuon(iEvent, iSetup, reco::TrackRef( innerTrackCollectionHandle_, i ), reco::Muon::InnerTrack ) );
trackerMuon.setType( reco::Muon::TrackerMuon | reco::Muon::RPCMuon );
fillMuonId(iEvent, iSetup, trackerMuon, *direction);

if ( debugWithTruthMatching_ ) {
Expand All @@ -602,6 +601,8 @@ void MuonIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
bool newMuon = true;
bool goodTrackerMuon = isGoodTrackerMuon( trackerMuon );
bool goodRPCMuon = isGoodRPCMuon( trackerMuon );
if ( goodTrackerMuon ) trackerMuon.setType( trackerMuon.type() | reco::Muon::TrackerMuon );
if ( goodRPCMuon ) trackerMuon.setType( trackerMuon.type() | reco::Muon::RPCMuon );
for ( reco::MuonCollection::iterator muon = outputMuons->begin();
muon != outputMuons->end(); ++muon )
{
Expand All @@ -620,7 +621,7 @@ void MuonIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
}
}
if ( newMuon ) {
if ( goodTrackerMuon ){
if ( goodTrackerMuon || goodRPCMuon ){
outputMuons->push_back( trackerMuon );
} else {
LogTrace("MuonIdentification") << "track failed minimal number of muon matches requirement";
Expand Down
Expand Up @@ -229,7 +229,7 @@ MuonCosmicCompatibilityFiller::backToBack2LegCosmic(const edm::Event& iEvent, co
reco::TrackRef track;
if ( muon.isGlobalMuon() ) track = muon.innerTrack();
else if ( muon.isTrackerMuon() ) track = muon.track();
else if ( muon.isStandAloneMuon() ) return false;
else if ( muon.isStandAloneMuon() || muon.isRPCMuon() ) return false;

for (unsigned int iColl = 0; iColl<trackTokens_.size(); ++iColl){
edm::Handle<reco::TrackCollection> trackHandle;
Expand Down Expand Up @@ -405,7 +405,7 @@ MuonCosmicCompatibilityFiller::pvMatches(const edm::Event& iEvent, const reco::M

reco::TrackRef track;
if ( muon.isGlobalMuon() ) track = muon.innerTrack();
else if ( muon.isTrackerMuon() ) track = muon.track();
else if ( muon.isTrackerMuon() || muon.isRPCMuon() ) track = muon.track();
else if ( muon.isStandAloneMuon()) track = muon.standAloneMuon();

bool multipleMu = false;
Expand Down