00001 #ifndef MuonReco_MuonCocktails_h
00002 #define MuonReco_MuonCocktails_h
00003
00014 #include "DataFormats/MuonReco/interface/Muon.h"
00015 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00016 #include "DataFormats/TrackReco/interface/TrackToTrackMap.h"
00017
00018 namespace muon {
00019
00020 reco::TrackRef tevOptimized(const reco::TrackRef& combinedTrack,
00021 const reco::TrackRef& trackerTrack,
00022 const reco::TrackRef& tpfmsTrack,
00023 const reco::TrackRef& pickyTrack,
00024 const double tune1 = 30.,
00025 const double tune2 = 0.);
00026
00027
00028
00029 reco::TrackRef tevOptimized(const reco::Muon& muon,
00030 const double tune1 = 30.,
00031 const double tune2 = 0.) {
00032 return tevOptimized(muon.globalTrack(),
00033 muon.innerTrack(),
00034 muon.tpfmsTrack(),
00035 muon.pickyTrack(),
00036 tune1,
00037 tune2);
00038 }
00039
00040
00041
00042
00043
00044
00045
00046
00047 reco::TrackRef getTevRefitTrack(const reco::TrackRef& combinedTrack,
00048 const reco::TrackToTrackMap& map) {
00049 reco::TrackToTrackMap::const_iterator it = map.find(combinedTrack);
00050 return it == map.end() ? reco::TrackRef() : it->val;
00051 }
00052
00053 reco::TrackRef tevOptimized(const reco::TrackRef& combinedTrack,
00054 const reco::TrackRef& trackerTrack,
00055 const reco::TrackToTrackMap& tevMap1,
00056 const reco::TrackToTrackMap& tevMap2,
00057 const reco::TrackToTrackMap& tevMap3) {
00058 return tevOptimized(combinedTrack,
00059 trackerTrack,
00060 getTevRefitTrack(combinedTrack, tevMap2),
00061 getTevRefitTrack(combinedTrack, tevMap3));
00062 }
00063
00064 reco::TrackRef tevOptimized(const reco::Muon& muon,
00065 const reco::TrackToTrackMap& tevMap1,
00066 const reco::TrackToTrackMap& tevMap2,
00067 const reco::TrackToTrackMap& tevMap3 ) {
00068 return tevOptimized(muon.combinedMuon(),
00069 muon.track(),
00070 getTevRefitTrack(muon.combinedMuon(), tevMap2),
00071 getTevRefitTrack(muon.combinedMuon(), tevMap3));
00072 }
00073
00074
00075
00076 reco::TrackRef tevOptimizedOld( const reco::TrackRef& combinedTrack,
00077 const reco::TrackRef& trackerTrack,
00078 const reco::TrackToTrackMap tevMap1,
00079 const reco::TrackToTrackMap tevMap2,
00080 const reco::TrackToTrackMap tevMap3 );
00081
00082 reco::TrackRef tevOptimizedOld( const reco::Muon& muon,
00083 const reco::TrackToTrackMap tevMap1,
00084 const reco::TrackToTrackMap tevMap2,
00085 const reco::TrackToTrackMap tevMap3 ) {
00086 return tevOptimizedOld(muon.combinedMuon(), muon.track(), tevMap1, tevMap2, tevMap3);
00087 }
00088
00089
00090
00091 reco::TrackRef sigmaSwitch(const reco::TrackRef& combinedTrack,
00092 const reco::TrackRef& trackerTrack,
00093 const double nSigma = 2.,
00094 const double ptThreshold = 200.);
00095
00096
00097 reco::TrackRef sigmaSwitch(const reco::Muon& muon,
00098 const double nSigma = 2.,
00099 const double ptThreshold = 200.) {
00100 return muon::sigmaSwitch(muon.globalTrack(),
00101 muon.innerTrack(),
00102 nSigma,
00103 ptThreshold);
00104 }
00105
00106
00107
00108 reco::TrackRef TMR(const reco::TrackRef& trackerTrack,
00109 const reco::TrackRef& fmsTrack,
00110 const double tune=4.);
00111
00112 double trackProbability(const reco::TrackRef track);
00113 }
00114
00115 #endif