109 std::vector<std::pair<RefToBase<Track>,
double> > rvGlb;
111 if (glbsimToRecoCollection.
find(
tp) != glbsimToRecoCollection.
end()) {
112 rvGlb = glbsimToRecoCollection[
tp];
113 if (!rvGlb.empty()) {
114 rGlb = rvGlb.begin()->first;
118 std::vector<std::pair<RefToBase<Track>,
double> > rvSta;
120 if (stasimToRecoCollection.
find(
tp) != stasimToRecoCollection.
end()) {
121 rvSta = stasimToRecoCollection[
tp];
122 if (!rvSta.empty()) {
123 rSta = rvSta.begin()->first;
127 std::vector<std::pair<RefToBase<Track>,
double> > rvTk;
129 if (tksimToRecoCollection.
find(
tp) != tksimToRecoCollection.
end()) {
130 rvTk = tksimToRecoCollection[
tp];
132 rTk = rvTk.begin()->first;
136 if (!rvSta.empty() && !rvTk.empty()) {
141 for (reco::MuonTrackLinksCollection::const_iterator
links = muHandle->begin();
links != muHandle->end(); ++
links) {
161 for (reco::MuonTrackLinksCollection::const_iterator
links = muHandle->begin();
links != muHandle->end(); ++
links) {
166 std::vector<std::pair<TrackingParticleRef, double> > tp1;
168 if (glbrecoToSimCollection.
find(glbRef) != glbrecoToSimCollection.
end()) {
169 tp1 = glbrecoToSimCollection[glbRef];
171 tp1r = tp1.begin()->first;
175 std::vector<std::pair<TrackingParticleRef, double> > tp2;
177 if (starecoToSimCollection.
find(staRef) != starecoToSimCollection.
end()) {
178 tp2 = starecoToSimCollection[staRef];
180 tp2r = tp2.begin()->first;
184 std::vector<std::pair<TrackingParticleRef, double> > tp3;
186 if (tkrecoToSimCollection.
find(tkRef) != tkrecoToSimCollection.
end()) {
187 tp3 = tkrecoToSimCollection[tkRef];
189 tp3r = tp3.begin()->first;
228 ibooker.
setScope(MonitorElementData::Scope::RUN);
234 h_shouldMatch = ibooker.
book2D(
"h_shouldMatch",
"SIM associated to Tk and Sta", 50, -2.5, 2.5, 100, 0., 500.);
235 h_goodMatchSim = ibooker.
book2D(
"h_goodMatchSim",
"SIM associated to Glb Sta Tk", 50, -2.5, 2.5, 100, 0., 500.);
236 h_tkOnlySim = ibooker.
book2D(
"h_tkOnlySim",
"SIM associated to Glb Tk", 50, -2.5, 2.5, 100, 0., 500.);
237 h_staOnlySim = ibooker.
book2D(
"h_staOnlySim",
"SIM associated to Glb Sta", 50, -2.5, 2.5, 100, 0., 500.);
239 h_totReco = ibooker.
book2D(
"h_totReco",
"Total Glb Reconstructed", 50, -2.5, 2.5, 100, 0., 500.);
240 h_goodMatch = ibooker.
book2D(
"h_goodMatch",
"Sta and Tk from same SIM", 50, -2.5, 2.5, 100, 0., 500.);
241 h_fakeMatch = ibooker.
book2D(
"h_fakeMatch",
"Sta and Tk not from same SIM", 50, -2.5, 2.5, 100, 0., 500.);
243 h_effic = ibooker.
book1D(
"h_effic",
"Efficiency vs #eta", 50, -2.5, 2.5);
244 h_efficPt = ibooker.
book1D(
"h_efficPt",
"Efficiency vs p_{T}", 100, 0., 100.);
246 h_fake = ibooker.
book1D(
"h_fake",
"Fake fraction vs #eta", 50, -2.5, 2.5);
247 h_fakePt = ibooker.
book1D(
"h_fakePt",
"Fake fraction vs p_{T}", 100, 0., 100.);
254 TH1D *
reco = h1->ProjectionX();
257 TH1D *
sim = h2->ProjectionX();
259 TH1F *hEff = (TH1F *)
reco->Clone();
263 hEff->SetName(
"tmp_" + TString(
reco->GetName()));
268 float nSimHit =
sim->GetBinContent(
bin);
269 float eff = hEff->GetBinContent(
bin);
271 if (nSimHit != 0 && eff <= 1) {
284 TH1D *
reco = h1->ProjectionY();
287 TH1D *
sim = h2->ProjectionY();
289 TH1F *hEff = (TH1F *)
reco->Clone();
293 hEff->SetName(
"tmp_" + TString(
reco->GetName()));
296 int nBinsPt = hEff->GetNbinsX();
297 for (
int bin = 1;
bin <= nBinsPt;
bin++) {
298 float nSimHit =
sim->GetBinContent(
bin);
299 float eff = hEff->GetBinContent(
bin);
301 if (nSimHit != 0 && eff <= 1) {
reco::SimToRecoCollection associateSimToReco(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
MonitorElement * h_goodMatchSim
MonitorElement * h_tkOnlySim
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > muAssociatorToken_
reco::RecoToSimCollection associateRecoToSim(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
MonitorElement * h_shouldMatch
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * h_fakePt
T const * product() const
virtual MonitorElementData::Scope setScope(MonitorElementData::Scope newscope)
void dqmEndRun(const edm::Run &, const edm::EventSetup &) override
const_iterator find(const key_type &k) const
find element with specified reference key
std::vector< MuonTrackLinks > MuonTrackLinksCollection
collection of MuonTrackLinks
const_iterator end() const
last iterator over the map (read only)
T getUntrackedParameter(std::string const &, T const &) const
double pt() const
track transverse momentum
MonitorElement * h_fakeMatch
edm::ParameterSet iConfig
MonitorElement * h_totReco
edm::EDGetTokenT< edm::View< reco::Track > > glbToken_
void computeEfficiencyPt(MonitorElement *, MonitorElement *recoTH2, MonitorElement *simTH2)
edm::EDGetTokenT< edm::View< reco::Track > > staToken_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * h_staOnlySim
double eta() const
pseudorapidity of momentum vector
~GlobalMuonMatchAnalyzer() override
edm::InputTag muAssociatorName_
void analyze(const edm::Event &, const edm::EventSetup &) override
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
GlobalMuonMatchAnalyzer(const edm::ParameterSet &)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
std::string subsystemname_
MonitorElement * h_efficPt
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
edm::EDGetTokenT< edm::View< reco::Track > > tpToken_
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
edm::InputTag tkAssociatorName_
std::vector< TrackingParticle > TrackingParticleCollection
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * h_goodMatch
void computeEfficiencyEta(MonitorElement *, MonitorElement *recoTH2, MonitorElement *simTH2)
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > tkAssociatorToken_
edm::EDGetTokenT< edm::View< reco::Track > > tkToken_