29 produces<std::vector<pat::Muon>>();
55 mu.addUserFloat(
"innerTrackDxy", innerTrackDxy);
56 mu.addUserFloat(
"innerTrackDz", innerTrackDz);
61 for (
const auto &trk :
tracks) {
62 if (
deltaR(
mu.eta(),
mu.phi(), trk.eta(), trk.phi()) > 0.4)
67 float relTrkiso4 = (Trkiso04 > 0) ? Trkiso04 : 0;
68 mu.addUserFloat(
"relTrkiso4", relTrkiso4);
78 nsegments +=
chamber.segmentMatches.size();
80 mu.addUserInt(
"nsegments", nsegments);
95 std::unique_ptr<std::vector<pat::Muon>>
out(
new std::vector<pat::Muon>());
104 if (
vtx.isFake() || !
vtx.isValid())
110 mu.addUserInt(
"isGoodVertex", good_vertex);
std::vector< Track > TrackCollection
collection of Tracks
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
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