00001 #ifndef ConversionTrackPairFinder_H 00002 #define ConversionTrackPairFinder_H 00003 00014 #include "DataFormats/TrackReco/interface/Track.h" 00015 #include "DataFormats/TrackReco/interface/TrackExtra.h" 00016 // 00017 #include "FWCore/Framework/interface/ESHandle.h" 00018 #include "FWCore/Framework/interface/EventSetup.h" 00019 #include "FWCore/Framework/interface/Event.h" 00020 #include "DataFormats/Common/interface/Handle.h" 00021 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h" 00022 #include "DataFormats/Common/interface/ValueMap.h" 00023 00024 // 00025 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00026 #include "TrackingTools/TransientTrack/interface/TrackTransientTrack.h" 00027 #include "DataFormats/EgammaTrackReco/interface/TrackCaloClusterAssociation.h" 00028 00029 class ConversionTrackPairFinder { 00030 00031 public: 00032 00033 ConversionTrackPairFinder(); 00034 00035 00036 ~ConversionTrackPairFinder(); 00037 00038 00039 std::map<std::vector<reco::TransientTrack>, reco::CaloClusterPtr> run(std::vector<reco::TransientTrack> outIn, 00040 const edm::Handle<reco::TrackCollection>& outInTrkHandle, 00041 const edm::Handle<reco::TrackCaloClusterPtrAssociation>& outInTrackSCAssH, 00042 std::vector<reco::TransientTrack> inOut, 00043 const edm::Handle<reco::TrackCollection>& inOutTrkHandle, 00044 const edm::Handle<reco::TrackCaloClusterPtrAssociation>& inOutTrackSCAssH ); 00045 00046 00047 private: 00048 00049 class ByNumOfHits { 00050 public: 00051 bool operator()(reco::TransientTrack a, reco::TransientTrack b) { 00052 if (a.numberOfValidHits() == b.numberOfValidHits() ) { 00053 return a.normalizedChi2() < b.normalizedChi2(); 00054 } else { 00055 return a.numberOfValidHits() > b.numberOfValidHits() ; 00056 } 00057 } 00058 }; 00059 00060 00061 00062 00063 }; 00064 00065 #endif // ConversionTrackPairFinder_H 00066 00067