25 produces<nanoaod::FlatTable>();
34 ->setComment(
"input vertex collection, for dxy/dz");
35 desc.
add<
std::string>(
"name")->setComment(
"name of the muon nanoaod::FlatTable we are extending with IDs");
36 descriptions.
add(
"muonIDTable", desc);
58 unsigned int ncand = muons->size();
62 bool isRun2016BCDEF = (272007 <= iEvent.
run() && iEvent.
run() <= 278808);
63 std::vector<uint8_t> tight(ncand, 0), highPt(ncand, 0), soft(ncand, 0), medium(ncand, 0);
64 for (
unsigned int i = 0;
i < ncand; ++
i) {
72 auto tab = std::make_unique<nanoaod::FlatTable>(ncand,
name_,
false,
true);
73 tab->addColumn<
bool>(
"tightId", tight,
"POG Tight muon ID");
74 tab->addColumn<uint8_t>(
77 "POG highPt muon ID (1 = tracker high pT, 2 = global high pT, which includes tracker high pT)");
81 "POG Soft muon ID (using the relaxed cuts in the data Run 2016 B-F periods, and standard cuts elsewhere)");
85 "POG Medium muon ID (using the relaxed cuts in the data Run 2016 B-F periods, and standard cuts elsewhere)");
100 mu.
innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5 &&
101 mu.
innerTrack()->hitPattern().pixelLayersWithMeasurement() > 0 &&
109 mu.
innerTrack()->hitPattern().numberOfValidPixelHits() > 0 &&
110 mu.
innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5);
float chi2LocalPosition
chi2 value for the STA-TK matching of local position
edm::EDGetTokenT< std::vector< reco::Vertex > > srcVtx_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
void produce(edm::StreamID, edm::Event &, edm::EventSetup const &) const override
bool isMediumMuon(const reco::Muon &, bool run2016_hip_mitigation=false)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
float trkKink
value of the kink algorithm applied to the inner track stub
edm::EDGetTokenT< std::vector< pat::Muon > > src_
const Point & position() const
position
bool isLooseMuon(const reco::Muon &)
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
~MuonIDTableProducer() override
MuonQuality combinedQuality() const
get energy deposition information
Abs< T >::type abs(const T &t)
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isSoftMuon(const reco::Muon &, const reco::Vertex &, bool run2016_hip_mitigation=false)
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
int numberOfMatchedStations(ArbitrationType type=SegmentAndTrackArbitration) const
static bool isSoftMuonHIP(const pat::Muon &muon, const reco::Vertex &vtx)
MuonIDTableProducer(const edm::ParameterSet &iConfig)
bool isHighPtMuon(const reco::Muon &, const reco::Vertex &)
static bool isMediumMuonHIP(const pat::Muon &muon)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
reco::TrackRef globalTrack() const override
reference to Track reconstructed in both tracked and muon detector (reimplemented from reco::Muon) ...
reco::TrackRef innerTrack() const override
reference to Track reconstructed in the tracker only (reimplemented from reco::Muon) ...
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static bool isTrackerHighPt(const pat::Muon &mu, const reco::Vertex &primaryVertex)
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
reco::TrackRef muonBestTrack() const override
Track selected to be the best measurement of the muon parameters (including PFlow global information)...
Analysis-level muon class.
bool isGlobalMuon() const override