57 desc.
add<
int>(
"minTrkHits",-1);
58 desc.
add<
int>(
"minMuonHits",-1);
59 desc.
add<
double>(
"maxNormalizedChi2",1e99);
60 desc.
add<
double>(
"minDR",0.1);
61 desc.
add<
unsigned int>(
"allowedTypeMask",255);
62 desc.
add<
unsigned int>(
"requiredTypeMask",0);
63 desc.
add<
unsigned int>(
"trkMuonId",0);
64 desc.
add<
double>(
"minPtMuon1",17);
65 desc.
add<
double>(
"minPtMuon2",8);
66 desc.
add<
double>(
"maxEtaMuon",1e99);
67 desc.
add<
double>(
"maxYDimuon",1e99);
68 desc.
add<
double>(
"minMass",1);
69 desc.
add<
double>(
"maxMass",1e99);
70 desc.
add<
int>(
"ChargeOpt",0);
71 desc.
add<
double>(
"maxDCAMuMu",1e99);
72 desc.
add<
double>(
"maxdEtaMuMu",1e99);
73 descriptions.
add(
"hltDiMuonGlbTrkFilter",desc);
84 if ( cands->size() != muons->size() )
86 std::vector<unsigned int> filteredMuons;
87 for (
unsigned int i=0;
i<muons->size(); ++
i ){
91 if ( !
muon.innerTrack().isNull() ){
94 if ( !
muon.globalTrack().isNull() ){
96 if (
muon.globalTrack()->hitPattern().numberOfValidMuonHits()<
m_minMuonHits)
continue;
101 filteredMuons.push_back(
i);
104 unsigned int npassed(0);
105 std::set<unsigned int> mus;
106 if ( filteredMuons.size()>1 ){
110 for (
unsigned int i=0;
i < filteredMuons.size()-1; ++
i )
111 for (
unsigned int j=
i+1; j < filteredMuons.size(); ++j ){
112 const reco::Muon& mu1(muons->at(filteredMuons.at(
i)));
113 const reco::Muon& mu2(muons->at(filteredMuons.at(j)));
137 mus.insert(filteredMuons.at(
i));
138 mus.insert(filteredMuons.at(j));
144 for (
unsigned int mu : mus)
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > m_candsToken
float distance() const override
double eta() const final
momentum pseudorapidity
double m_maxNormalizedChi2
bool getByToken(EDGetToken token, Handle< PROD > &result) const
TrajectoryStateClosestToPoint impactPointTSCP() const
const FreeTrajectoryState & theState() const
double pt() const final
transverse momentum
int charge() const final
electric charge
unsigned int m_allowedTypeMask
unsigned int m_requiredTypeMask
SelectionType
Selector type.
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
#define DEFINE_FWK_MODULE(type)
bool status() const override
bool calculate(const TrajectoryStateOnSurface &sta, const TrajectoryStateOnSurface &stb) override
T get() const
get a component
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
Abs< T >::type abs(const T &t)
const LorentzVector & p4() const final
four-momentum Lorentz vector
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
HLTDiMuonGlbTrkFilter(const edm::ParameterSet &)
edm::EDGetTokenT< reco::MuonCollection > m_muonsToken
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
muon::SelectionType m_trkMuonId