![]() |
![]() |
00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentMuonSelector_h 00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentMuonSelector_h 00003 00018 #include "DataFormats/MuonReco/interface/Muon.h" 00019 #include "PhysicsTools/RecoAlgos/interface/MuonSelector.h" 00020 #include <vector> 00021 00022 namespace edm { class Event; } 00023 00024 class AlignmentMuonSelector 00025 { 00026 00027 public: 00028 00029 typedef std::vector<const reco::Muon*> Muons; 00030 00032 AlignmentMuonSelector(const edm::ParameterSet & cfg); 00033 00035 ~AlignmentMuonSelector(); 00036 00038 Muons select(const Muons& muons, const edm::Event& evt) const; 00039 00040 private: 00041 00043 Muons basicCuts(const Muons& muons) const; 00044 00046 Muons theNHighestPtMuons(const Muons& muons) const; 00047 00049 Muons theBestMassPairCombinationMuons(const Muons& muons) const; 00050 00052 struct ComparePt { 00053 bool operator()( const reco::Muon* t1, const reco::Muon* t2 ) const { 00054 return t1->pt()> t2->pt(); 00055 } 00056 }; 00057 ComparePt ptComparator; 00058 00060 bool applyBasicCuts,applyNHighestPt,applyMultiplicityFilter,applyMassPairFilter; 00061 int nHighestPt,minMultiplicity; 00062 double ptMin,ptMax,etaMin,etaMax,phiMin,phiMax; 00063 double nHitMinSA,nHitMaxSA,chi2nMaxSA; 00064 double nHitMinGB,nHitMaxGB,chi2nMaxGB; 00065 double nHitMinTO,nHitMaxTO,chi2nMaxTO; 00066 double minMassPair,maxMassPair; 00067 00068 }; 00069 00070 #endif 00071