CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/HeavyFlavorAnalysis/Skimming/interface/Tau3MuReco.h

Go to the documentation of this file.
00001 #ifndef TAU3MURECO_H
00002 #define TAU3MURECO_H
00003 
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 #include "FWCore/Framework/interface/Event.h"
00006 #include "FWCore/Utilities/interface/InputTag.h"
00007 
00008 #include <DataFormats/TrackReco/interface/Track.h>
00009 #include <DataFormats/MuonReco/interface/Muon.h>
00010 #include <DataFormats/MuonReco/interface/MuonFwd.h>
00011 
00012 class Tau3MuReco
00013 {
00014  public:
00015     Tau3MuReco(const edm::ParameterSet& iConfig);
00016     ~Tau3MuReco();
00017     
00018     bool doTau3MuReco(const edm::Event& iEvent, const edm::EventSetup& iSetup, reco::MuonCollection* muonCollection, reco::TrackCollection* trackCollection);
00019 
00020  private:
00021 
00022     bool check4MuonTrack(const reco::Track& track); //compares track with reconstructed muons and return true if they are equal
00023     bool find3rdTrack(const edm::Event& iEvent, const edm::EventSetup& iSetup, const reco::TrackCollection& Tracks); //try to find a 3rd muon in tracks, if this was not detected as a muon
00024     bool findCorrectPairing(); //find the correct 3 muons, if more than 3 muons has been reconstructed
00025     double getInvariantMass(const reco::TrackCollection* tracks, const double MuonMass=0.106);
00026     double getDeltaR(const reco::Track& track1, const reco::Track& track2);
00027     bool removeIncorrectMuon(); //try to remove one muon, which seems to come not from a tau->3Mu decay
00028 
00029     const double m_kMatchingDeltaR;
00030     const double m_kMatchingPt;
00031     const double m_kTauMassCut;
00032     const double m_kTauMass;
00033     const double m_kMuonMass;
00034 
00035     const edm::InputTag m_kMuonSource;
00036     const edm::InputTag m_kTrackSource;
00037     
00038     reco::MuonCollection* m_MuonCollection;
00039     reco::TrackCollection* m_TrackCollection;
00040 };
00041 
00042 #endif