Get the analysis.
90 VertexCollection::const_iterator privtx;
92 if (privtxs->begin() != privtxs->end()) {
93 privtx = privtxs->begin();
94 RefVtx = privtx->position();
99 if (
muons.isValid()) {
100 for (MuonCollection::const_iterator recoMu1 =
muons->begin(); recoMu1 !=
muons->end(); ++recoMu1) {
102 if (recoMu1->isGlobalMuon() || recoMu1->isTrackerMuon() || recoMu1->isStandAloneMuon()) {
103 for (MuonCollection::const_iterator recoMu2 = recoMu1 + 1; recoMu2 !=
muons->end(); ++recoMu2) {
106 if (recoMu1->isGlobalMuon() && recoMu2->isGlobalMuon()) {
112 if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
135 if (recoMu1->isStandAloneMuon() && recoMu2->isStandAloneMuon() && fabs(recoMu1->outerTrack()->d0()) < 5 &&
136 fabs(recoMu1->outerTrack()->dz()) < 30 && fabs(recoMu2->outerTrack()->d0()) < 5 &&
137 fabs(recoMu2->outerTrack()->dz()) < 30) {
143 if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
162 if (recoMu1->isTrackerMuon() && recoMu2->isTrackerMuon() &&
170 if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
bool selGlobalMuon(const reco::Muon &recoMu)
edm::EDGetTokenT< reco::VertexCollection > vertex_
MonitorElement * global_background
MonitorElement * tracker_background
MonitorElement * diMuonMass_global
MonitorElement * glbSigCut
MonitorElement * diMuonMass_standalone
MonitorElement * trkSigCut
MonitorElement * standalone_background
MonitorElement * staBkgNoCut
std::vector< double > vec1
edm::EDGetTokenT< reco::MuonCollection > theMuonCollectionLabel_
MonitorElement * staSigNoCut
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
XYZVectorD XYZVector
spatial vector with cartesian internal representation
MonitorElement * trkBkgNoCut
MonitorElement * glbBkgNoCut
MonitorElement * diMuonMass_tracker
bool selTrackerMuon(const reco::Muon &recoMu)
float computeMass(const math::XYZVector &vec1, const math::XYZVector &vec2)
MonitorElement * trkSigNoCut
MonitorElement * glbSigNoCut