29 produces<std::vector<pat::Muon>>();
56 mu.addUserFloat(
"innerTrackDxy", innerTrackDxy);
57 mu.addUserFloat(
"innerTrackDz", innerTrackDz);
62 for (
const auto &trk :
tracks) {
63 if (
deltaR(
mu.eta(),
mu.phi(), trk.eta(), trk.phi()) > 0.4)
68 float absTrkiso04 = (Trkiso04 > 0) ? Trkiso04 : 0;
69 mu.addUserFloat(
"absTrkiso04", absTrkiso04);
74 for (
const auto &trk :
tracks) {
75 if (
deltaR(
mu.eta(),
mu.phi(), trk.eta(), trk.phi()) > 0.3)
80 float absTrkiso03 = (Trkiso03 > 0) ? Trkiso03 : 0;
81 mu.addUserFloat(
"absTrkiso03", absTrkiso03);
91 nsegments +=
chamber.segmentMatches.size();
93 mu.addUserInt(
"nsegments", nsegments);
108 std::unique_ptr<std::vector<pat::Muon>>
out(
new std::vector<pat::Muon>());
117 if (
vtx.isFake() || !
vtx.isValid())
123 mu.addUserInt(
"isGoodVertex", good_vertex);
std::vector< Track > TrackCollection
collection of Tracks
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
void setTrkiso03(pat::Muon &mu, const std::vector< reco::Track > tracks) const
void setInnerTrackDxyz(pat::Muon &mu, const reco::Vertex &vtx) const
#define DEFINE_FWK_MODULE(type)
math::XYZPoint Point
point in the space
void setNSegements(pat::Muon &mu) const
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
void setArbitratedTracker(pat::Muon &mu) const
~MuonSpecialVariables() override
edm::EDGetToken vertexSrc_
Analysis-level muon class.
MuonSpecialVariables(const edm::ParameterSet &iConfig)
void setTrkiso04(pat::Muon &mu, const std::vector< reco::Track > tracks) const