CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/DataFormats/MuonReco/interface/MuonCocktails.h

Go to the documentation of this file.
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   // Version for convenience. (NB: can be used with pat::Muon, even
00028   // with embedded tracks, equally conveniently!)
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   // The next two versions of tevOptimized are for backward
00041   // compatibility; TrackToTrackMaps are to be removed from the
00042   // EventContent, so these versions will go away (along with the
00043   // helper getter function) after a deprecation period. Since they
00044   // are just for backward compatibility and not for new code, we
00045   // don't bother to expose the tune parameters.
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   // This old version of the cocktail function is deprecated and so it
00075   // doesn't get the new interface.
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   // The cocktail used as the soon-to-be-old default momentum
00090   // assignment for the reco::Muon.
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   // Convenience version of the above.
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   // "Truncated muon reconstructor": the first cocktail, between just
00107   // tracker-only and TPFMS. Similar to tevOptimized.
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