Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentMuonSelector_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentMuonSelector_h
00003
00018 #include "DataFormats/MuonReco/interface/Muon.h"
00019 #include "CommonTools/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 pMin,pMax,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