-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add offline DQM for MET plus track EXO triggers #19490
Conversation
A new Pull Request was created by @bpf6qc (Brian Francis) for master. It involves the following packages: DQMOffline/Trigger @vazzolini, @kmaeshima, @dmitrijus, @cmsbuild, @vanbesien, @davidlange6 can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
why couldn't you make use of the already available code ? then, try to squeeze as much as possible the # bins |
, hltTrk50FilterTag_ ( iConfig.getParameter<edm::InputTag>("isoTrkFilter") ) | ||
, met_variable_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("metBinning") ) | ||
, muonPt_variable_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("ptBinning") ) | ||
, met_binning_ ( getHistoPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("metPSet") ) ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do you really need it ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which of these are you referring to? If you mean this variable binning histograms, we don't particularly need them; it seemed to be a common inclusion from other modules.
, jetToken_ ( consumes<reco::PFJetCollection> (iConfig.getParameter<edm::InputTag>("jets") ) ) | ||
, vtxToken_ ( consumes<reco::VertexCollection> (iConfig.getParameter<edm::InputTag>("vertices") ) ) | ||
, theTrigSummary_ ( consumes<trigger::TriggerEvent> (iConfig.getParameter<edm::InputTag>("trigSummary") ) ) | ||
, hltTrk50FilterTag_ ( iConfig.getParameter<edm::InputTag>("isoTrkFilter") ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you might want to have such parameter slightly more generic ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be changed.
, muonPt_variable_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("ptBinning") ) | ||
, met_binning_ ( getHistoPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("metPSet") ) ) | ||
, ls_binning_ ( getHistoLSPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet") ) ) | ||
, pt_binning_ ( getHistoPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("ptPSet") ) ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do you need it ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same question as above: if you mean the variable binning, no.
bookME(ibooker, mTmuonMetME_, histname, histtitle, pt_binning_.nbins, pt_binning_.xmin, pt_binning_.xmax); | ||
setMETitle(mTmuonMetME_, "mT(Muon, CaloMET) [GeV]", "events / [GeV]"); | ||
|
||
histname = "muonPtVsLS"; histtitle = "Muon PT vs LS"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you have already the MET vs LS, are you applying a different selection for this ?
if not, please drop
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was requested by an analyzer, but you're right there is no additional selection: I'll remove it.
histname = "muonEta"; histtitle = "Muon eta"; | ||
bookME(ibooker, muonEtaME_, histname, histtitle, eta_binning_.nbins, eta_binning_.xmin, eta_binning_.xmax); | ||
setMETitle(muonEtaME_, "Muon #eta", "events / 0.2"); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you are missing the eta-phi plot
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will add it.
std::vector<reco::Muon> muons; | ||
muons.clear(); | ||
for(auto const & m : *muonHandle) { | ||
bool pass = m.isGlobalMuon() && |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
couldn't you make use of some of the functions provided by MUO POG ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes; this is just reco::Muon::isTight and will be changed. Also I realize here that I haven't included muon isolation, which we want to require.
the other way round ;)
… On 1 Jul 2017, at 16:49, Brian Francis ***@***.***> wrote:
@bpf6qc commented on this pull request.
In DQMOffline/Trigger/plugins/METplusTrackMonitor.cc:
> +// constructors and destructor
+// -----------------------------
+
+METplusTrackMonitor::METplusTrackMonitor( const edm::ParameterSet& iConfig ) :
+ folderName_ ( iConfig.getParameter<std::string>("FolderName") )
+ , metToken_ ( consumes<reco::CaloMETCollection> (iConfig.getParameter<edm::InputTag>("met") ) )
+ , hltMetToken_ ( consumes<reco::CaloMETCollection> (iConfig.getParameter<edm::InputTag>("onlineMet") ) )
+ , hltMetCleanToken_ ( consumes<reco::CaloMETCollection> (iConfig.getParameter<edm::InputTag>("onlineMetClean") ) )
+ , muonToken_ ( consumes<reco::MuonCollection> (iConfig.getParameter<edm::InputTag>("muons") ) )
+ , jetToken_ ( consumes<reco::PFJetCollection> (iConfig.getParameter<edm::InputTag>("jets") ) )
+ , vtxToken_ ( consumes<reco::VertexCollection> (iConfig.getParameter<edm::InputTag>("vertices") ) )
+ , theTrigSummary_ ( consumes<trigger::TriggerEvent> (iConfig.getParameter<edm::InputTag>("trigSummary") ) )
+ , hltTrk50FilterTag_ ( iConfig.getParameter<edm::InputTag>("isoTrkFilter") )
+ , met_variable_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("metBinning") )
+ , muonPt_variable_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("ptBinning") )
+ , met_binning_ ( getHistoPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("metPSet") ) )
Which of these are you referring to? If you mean this variable binning histograms, we don't particularly need them; it seemed to be a common inclusion from other modules.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
;)
… On 1 Jul 2017, at 17:13, Brian Francis ***@***.***> wrote:
@bpf6qc commented on this pull request.
In DQMOffline/Trigger/plugins/METplusTrackMonitor.cc:
> + if(!primaryVertices->size()) return;
+ const reco::Vertex* pv = nullptr;
+ for(auto const& v: *primaryVertices) {
+ if (!vtxSelection_(v)) continue;
+ pv = &v;
+ break;
+ }
+ if(pv == nullptr) return;
+
+ edm::Handle<reco::MuonCollection> muonHandle;
+ iEvent.getByToken(muonToken_, muonHandle);
+ if(muonHandle->size() < nmuons_) return;
+ std::vector<reco::Muon> muons;
+ muons.clear();
+ for(auto const & m : *muonHandle) {
+ bool pass = m.isGlobalMuon() &&
Yes; this is just reco::Muon::isTight and will be changed. Also I realize here that I haven't included muon isolation, which we want to require.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Okay, I understand for the plot binnings. We always report our efficiencies with log-x (variable) binning so those binnings are preferred anyway. To answer your question about why this is its own module, the METMonitor would need very significant additions that the MET paths would never use, and the TOPMonitor conversely monitors much more than we require as well as not having the machinery to measure a multi-leg efficiency with online requirements and online/offline matching. In the end I felt it more appropriate to write this than to disturb those two so severely. |
Pull request #19490 was updated. @vazzolini, @kmaeshima, @dmitrijus, @cmsbuild, @vanbesien, @davidlange6 can you please check and sign again. |
I've tried to address all the issues mentioned. I also have included a requirement for tight PF-based muon isolation, which was mistakenly left out before. Total bins: 37,440 per path --> 74,880 total. |
@cmsbuild , please test |
The tests are being triggered in jenkins. |
tracked by #19142 |
+1 The following merge commits were also included on top of IB + this PR after doing git cms-merge-topic: |
Comparison job queued. |
The tests are being triggered in jenkins. |
This pull request is fully signed and it will be integrated in one of the next master IBs after it passes the integration tests. This pull request requires discussion in the ORP meeting before it's merged. @davidlange6, @smuzaffar |
Please do not rebase this. |
-1 You can see the log for git cms-merge-topic here: |
@davidlange6, can you comment on this PR ? |
iEvent.getByToken(jetToken_, jetsHandle); | ||
if(jetsHandle->size() < njets_) return; | ||
std::vector<reco::PFJet> jets; | ||
jets.clear(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hi @bpf6qc - this clear is not needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed.
if(jetSelection_(j)) jets.push_back(j); | ||
} | ||
if(jets.size() < njets_) return; | ||
if(njets_ > 0 && jets.size() > 0 && fabs(jets[0].eta()) > leadJetEtaCut_) return; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please use jets.empty()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you mean jets.clear() then I agree, I hadn't deallocated them before.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, really jets.empty()
: not empty()
is more efficient than size() > 0
metVsHltMetClean_.numerator->Fill(hltMetClean.pt(), met); | ||
|
||
// Filling track leg histograms (denominator) | ||
double leadMuonPt = muons.size() ? muons[0].pt() : -1.0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
muons.empty()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above, if you mean muons.clear() then okay, otherwise empty() just returns a bool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not muons.empty() ? ... : ...
is equivalent to and more efficient than muons.size() ? ... : ...
@bpf6qc can you address the comments from David ? |
@bpf6qc can you push an update to this PR ? |
Pull request #19490 was updated. @vazzolini, @kmaeshima, @dmitrijus, @cmsbuild, @vanbesien, @davidlange6 can you please check and sign again. |
Fixed conflicts: DQMOffline/Trigger/python/ExoticaMonitoring_Client_cff.py DQMOffline/Trigger/python/ExoticaMonitoring_cff.py
I have resolved the conflicts in #19916. |
This PR includes a backport of the following PRs: - cms-sw#18172 - cms-sw#18950 - cms-sw#18959 - cms-sw#18968 - cms-sw#18971 - cms-sw#19023 - cms-sw#19046 - cms-sw#19078 - cms-sw#19119 - cms-sw#19178 - cms-sw#19290 - cms-sw#19293 - cms-sw#19294 - cms-sw#19490 - cms-sw#19499 - cms-sw#19577 - cms-sw#19585 - cms-sw#19596 - cms-sw#19599 - cms-sw#19627 - cms-sw#19689 - cms-sw#19694 - cms-sw#19703 - cms-sw#19781 - cms-sw#19794 plus the older ones, contained in DQMOffline/Trigger and HLTriggerOffline. It synchronises with CMSSW_9_3_X - DQMServices/ClientConfig - DQMOffline/Configuration - DQMOffline/Trigger - HLTriggerOffline/Btag - HLTriggerOffline/Higgs - HLTriggerOffline/SUSYBSM - HLTriggerOffline/Tau - HLTriggerOffline/Top
This PR includes a backport of the following PRs: - cms-sw#18172 - cms-sw#18950 - cms-sw#18959 - cms-sw#18968 - cms-sw#18971 - cms-sw#19023 - cms-sw#19046 - cms-sw#19078 - cms-sw#19119 - cms-sw#19178 - cms-sw#19290 - cms-sw#19293 - cms-sw#19294 - cms-sw#19490 - cms-sw#19499 - cms-sw#19577 - cms-sw#19585 - cms-sw#19596 - cms-sw#19599 - cms-sw#19627 - cms-sw#19689 - cms-sw#19694 - cms-sw#19703 - cms-sw#19781 - cms-sw#19794 plus the older ones, contained in DQMOffline/Trigger and HLTriggerOffline. It synchronises with CMSSW_9_3_X - DQMServices/ClientConfig - DQMOffline/Configuration - DQMOffline/Trigger - HLTriggerOffline/Btag - HLTriggerOffline/Higgs - HLTriggerOffline/SUSYBSM - HLTriggerOffline/Tau - HLTriggerOffline/Top
This PR includes a backport of the following PRs: - cms-sw#18172 - cms-sw#18950 - cms-sw#18959 - cms-sw#18968 - cms-sw#18971 - cms-sw#19023 - cms-sw#19046 - cms-sw#19078 - cms-sw#19119 - cms-sw#19178 - cms-sw#19290 - cms-sw#19293 - cms-sw#19294 - cms-sw#19490 - cms-sw#19499 - cms-sw#19577 - cms-sw#19585 - cms-sw#19596 - cms-sw#19599 - cms-sw#19627 - cms-sw#19689 - cms-sw#19694 - cms-sw#19703 - cms-sw#19781 - cms-sw#19794 plus the older ones, contained in DQMOffline/Trigger and HLTriggerOffline. It synchronises with CMSSW_9_3_X - DQMServices/ClientConfig - DQMOffline/Configuration - DQMOffline/Trigger - HLTriggerOffline/Btag - HLTriggerOffline/Higgs - HLTriggerOffline/SUSYBSM - HLTriggerOffline/Tau - HLTriggerOffline/Top
Creates offline DQM monitoring for the MET+Track triggers for the 2017 pp collisions. These paths are owned by Exotica and are in the MET primary dataset.
c.f. TSG approval presentation: https://indico.cern.ch/event/646747/contributions/2626978/attachments/1476569/2287752/bfrancis_OSU_TSG.pdf
and JIRA ticket: https://its.cern.ch/jira/browse/CMSHLT-1381