17 : folderName_(iConfig.getParameter<
std::
string>(
"FolderName")),
23 hltMetTag_(iConfig.getParameter<
edm::
InputTag>(
"hltMetFilter")),
24 hltMetCleanTag_(iConfig.getParameter<
edm::
InputTag>(
"hltMetCleanFilter")),
25 trackLegFilterTag_(iConfig.getParameter<
edm::
InputTag>(
"trackLegFilter")),
26 met_variable_binning_(
27 iConfig.getParameter<
edm::
ParameterSet>(
"histoPSet").getParameter<
std::vector<double> >(
"metBinning")),
28 muonPt_variable_binning_(
29 iConfig.getParameter<
edm::
ParameterSet>(
"histoPSet").getParameter<
std::vector<double> >(
"ptBinning")),
30 met_binning_(getHistoPSet(
36 eta_binning_(getHistoPSet(
38 phi_binning_(getHistoPSet(
41 iConfig.getParameter<
edm::
ParameterSet>(
"numGenericTriggerEventPSet"), consumesCollector(), *this)),
43 iConfig.getParameter<
edm::
ParameterSet>(
"denGenericTriggerEventPSet"), consumesCollector(), *this)),
44 metSelection_(iConfig.getParameter<
std::
string>(
"metSelection")),
45 muonSelection_(iConfig.getParameter<
std::
string>(
"muonSelection")),
46 jetSelection_(iConfig.getParameter<
std::
string>(
"jetSelection")),
47 vtxSelection_(iConfig.getParameter<
std::
string>(
"vtxSelection")),
48 nmuons_(iConfig.getParameter<unsigned>(
"nmuons")),
49 njets_(iConfig.getParameter<unsigned>(
"njets")),
50 leadJetEtaCut_(iConfig.getParameter<double>(
"leadJetEtaCut")),
51 requireLeadMatched_(iConfig.getParameter<
bool>(
"requireLeadMatched")),
52 maxMatchDeltaR_(iConfig.getParameter<double>(
"maxMatchDeltaR")) {
84 histname =
"met_variable";
85 histtitle =
"CaloMET";
90 histtitle =
"CaloMET vs LS";
103 histtitle =
"CaloMET phi";
107 histname =
"deltaphi_metjet1";
108 histtitle =
"dPhi(CaloMET, jet1)";
112 histname =
"metVsHltMet";
113 histtitle =
"CaloMET vs hltMet";
126 histname =
"metVsHltMetClean";
127 histtitle =
"CaloMET vs hltMetClean";
142 histname =
"muonPt_variable";
143 histtitle =
"Muon PT";
147 histname =
"muonEta";
148 histtitle =
"Muon eta";
152 histname =
"deltaphi_muonmet";
153 histtitle =
"dPhi(Muon, CaloMET)";
157 histname =
"muonEtaVsPhi";
158 histtitle =
"Muon eta vs phi";
171 histname =
"muonPtVsLS";
172 histtitle =
"Muon PT vs LS";
202 float met = caloMet.
pt();
203 float metPhi = caloMet.
phi();
207 if (jetsHandle->size() <
njets_)
209 std::vector<reco::PFJet>
jets;
210 for (
auto const&
j : *jetsHandle) {
218 float deltaphi_metjet1 = !(jets.empty()) ? fabs(
deltaPhi(caloMet.
phi(), jets[0].phi())) : 10.0;
222 if (primaryVertices->empty())
225 for (
auto const&
v : *primaryVertices) {
236 if (muonHandle->size() <
nmuons_)
238 std::vector<reco::Muon>
muons;
239 for (
auto const&
m : *muonHandle) {
261 if (!triggerSummary.
isValid()) {
262 edm::LogError(
"METplusTrackMonitor") <<
"Invalid collection: TriggerSummary" 271 if (!passesHltMetFilter || !passesHltMetCleanFilter)
283 double leadMuonPt = !(muons.empty()) ? muons[0].
pt() : -1.0;
284 double leadMuonEta = !(muons.empty()) ? muons[0].
eta() : 10.0;
285 double leadMuonPhi = !(muons.empty()) ? muons[0].
phi() : 10.0;
286 float deltaphi_metmuon = !(muons.empty()) ? fabs(
deltaPhi(caloMet.
phi(), muons[0].phi())) : 10.0;
299 if (!passesTrackLegFilter)
336 desc.
add<
unsigned>(
"njets", 0);
337 desc.
add<
unsigned>(
"nmuons", 0);
338 desc.
add<
double>(
"leadJetEtaCut", 2.4);
339 desc.
add<
bool>(
"requireLeadMatched",
true);
340 desc.
add<
double>(
"maxMatchDeltaR", 0.1);
343 genericTriggerEventPSet.
add<
bool>(
"andOr");
345 genericTriggerEventPSet.
add<std::vector<int> >(
"dcsPartitions", {});
346 genericTriggerEventPSet.
add<
bool>(
"andOrDcs",
false);
347 genericTriggerEventPSet.
add<
bool>(
"errorReplyDcs",
true);
349 genericTriggerEventPSet.
add<
bool>(
"andOrHlt",
true);
351 genericTriggerEventPSet.
add<std::vector<std::string> >(
"hltPaths", {});
353 genericTriggerEventPSet.
add<
bool>(
"errorReplyHlt",
false);
354 genericTriggerEventPSet.
add<
unsigned int>(
"verbosityLevel", 1);
375 std::vector<double>
bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
376 170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.};
378 histoPSet.add<std::vector<double> >(
"metBinning",
bins);
379 histoPSet.add<std::vector<double> >(
"ptBinning",
bins);
387 descriptions.
add(
"metPlusTrackMonitoring", desc);
393 double leadingPt = -1.0;
395 size_t filterIndex = trigSummary->
filterIndex(filterTag);
398 if (!(filterIndex >= trigSummary->
sizeFilters())) {
400 for (
unsigned short key : keys) {
402 if (foundObject.
pt() > leadingPt) {
404 leadingPt = obj.
pt();
409 return (leadingPt > 0.0);
edm::EDGetTokenT< reco::PFJetCollection > jetToken_
edm::InputTag hltMetCleanTag_
METplusTrackMonitor(const edm::ParameterSet &)
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
trigger::size_type sizeFilters() const
bool getHLTObj(const edm::Handle< trigger::TriggerEvent > &trigSummary, const edm::InputTag &filterTag, trigger::TriggerObject &obj) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void setCurrentFolder(std::string const &fullpath)
const Keys & filterKeys(trigger::size_type index) const
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
double pt() const final
transverse momentum
std::vector< Vertex > VertexCollection
collection of Vertex objects
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
LuminosityBlockNumber_t luminosityBlock() const
edm::InputTag trackLegFilterTag_
void setMETitle(ObjME &me, const std::string &titleX, const std::string &titleY)
std::vector< Muon > MuonCollection
collection of Muon objects
std::vector< double > muonPt_variable_binning_
edm::EDGetTokenT< reco::MuonCollection > muonToken_
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
Single trigger physics object (e.g., an isolated muon)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
#define DEFINE_FWK_MODULE(type)
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
ObjME muonPtME_variableBinning_
const TriggerObjectCollection & getObjects() const
std::vector< double > met_variable_binning_
MonitorElement * denominator
MonitorElement * numerator
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
StringCutObjectSelector< reco::CaloMET, true > metSelection_
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
StringCutObjectSelector< reco::PFJet, true > jetSelection_
StringCutObjectSelector< reco::Muon, true > muonSelection_
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
std::vector< size_type > Keys
StringCutObjectSelector< reco::Vertex, true > vtxSelection_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< reco::CaloMETCollection > metToken_
std::vector< PFJet > PFJetCollection
collection of PFJet objects
ObjME metME_variableBinning_
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
double phi() const final
momentum azimuthal angle
void bookME(DQMStore::IBooker &, ObjME &me, const std::string &histname, const std::string &histtitle, unsigned nbins, double xmin, double xmax)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< trigger::TriggerEvent > theTrigSummary_