56 #include "TLorentzVector.h" 58 #include <unordered_map> 66 using std::unordered_map;
77 int pathIndexOR = -99;
100 double get_wall_time(
void);
109 unordered_map<hltPlot*, edm::ParameterSet*>
plotMap;
219 topDirectoryName =
"HLT/ObjectMonitor";
220 mainShifterFolder = topDirectoryName +
"/MainShifter";
221 backupFolder = topDirectoryName +
"/Backup";
224 processName_ = iConfig.
getParameter<
string>(
"processName");
227 plotMap[&caloAK4JetPt_] = &caloAK4JetPt_pset;
229 plotMap[&caloAK4JetEta_] = &caloAK4JetEta_pset;
231 plotMap[&caloAK4JetPhi_] = &caloAK4JetPhi_pset;
233 plotMap[&pfAK4JetPt_] = &pfAK4JetPt_pset;
235 plotMap[&pfAK4JetEta_] = &pfAK4JetEta_pset;
237 plotMap[&pfAK4JetPhi_] = &pfAK4JetPhi_pset;
239 plotMap[&caloDiAK4JetPt_] = &caloDiAK4JetPt_pset;
241 plotMap[&caloDiAK4JetEta_] = &caloDiAK4JetEta_pset;
243 plotMap[&caloDiAK4JetPhi_] = &caloDiAK4JetPhi_pset;
245 plotMap[&pfDiAK4JetPt_] = &pfDiAK4JetPt_pset;
247 plotMap[&pfDiAK4JetEta_] = &pfDiAK4JetEta_pset;
249 plotMap[&pfDiAK4JetPhi_] = &pfDiAK4JetPhi_pset;
251 plotMap[&photonPt_] = &photonPt_pset;
253 plotMap[&photonEta_] = &photonEta_pset;
255 plotMap[&photonPhi_] = &photonPhi_pset;
257 plotMap[&photonPPPt_] = &photonPPPt_pset;
259 plotMap[&photonPPEta_] = &photonPPEta_pset;
261 plotMap[&photonPPPhi_] = &photonPPPhi_pset;
263 plotMap[&caloBJetPt_] = &caloBJetPt_pset;
265 plotMap[&caloBJetEta_] = &caloBJetEta_pset;
267 plotMap[&caloBJetPhi_] = &caloBJetPhi_pset;
269 plotMap[&pfBJetPt_] = &pfBJetPt_pset;
271 plotMap[&pfBJetEta_] = &pfBJetEta_pset;
273 plotMap[&pfBJetPhi_] = &pfBJetPhi_pset;
275 plotMap[&electronPt_] = &electronPt_pset;
277 plotMap[&electronEta_] = &electronEta_pset;
279 plotMap[&electronPhi_] = &electronPhi_pset;
281 plotMap[&l3muon3Pt_] = &l3muon3Pt_pset;
283 plotMap[&l3muon3Eta_] = &l3muon3Eta_pset;
285 plotMap[&l3muon3Phi_] = &l3muon3Phi_pset;
287 plotMap[&l2muon12Pt_] = &l2muon12Pt_pset;
289 plotMap[&l2muon12Eta_] = &l2muon12Eta_pset;
291 plotMap[&l2muon12Phi_] = &l2muon12Phi_pset;
293 plotMap[&l3muon12Pt_] = &l3muon12Pt_pset;
295 plotMap[&l3muon12Eta_] = &l3muon12Eta_pset;
297 plotMap[&l3muon12Phi_] = &l3muon12Phi_pset;
299 plotMap[&pAL1DoubleMuZMass_] = &pAL1DoubleMuZMass_pset;
301 plotMap[&pAL2DoubleMuZMass_] = &pAL2DoubleMuZMass_pset;
303 plotMap[&pAL3DoubleMuZMass_] = &pAL3DoubleMuZMass_pset;
305 plotMap[&wallTime_] = &wallTime_pset;
307 for (
auto item = plotMap.begin();
item != plotMap.end();
item++) {
310 (*
item->first).
nBins = (*
item->second).getParameter<
int>(
"NbinsX");
311 (*
item->first).
xMin = (*
item->second).getParameter<
double>(
"Xmin");
312 (*
item->first).
xMax = (*
item->second).getParameter<
double>(
"Xmax");
313 (*
item->first).xAxisLabel = (*
item->second).getParameter<
string>(
"axisLabel");
315 (*
item->first).displayInPrimary = (*
item->second).getParameter<
bool>(
"mainWorkspace");
317 if ((*
item->second).exists(
"pathName_OR")) {
318 (*
item->first).pathNameOR = (*
item->second).getParameter<
string>(
"pathName_OR");
320 if ((*
item->second).exists(
"moduleName_OR")) {
321 (*
item->first).moduleNameOR = (*
item->second).getParameter<
string>(
"moduleName_OR");
324 plotList.push_back(
item->first);
344 double start = get_wall_time();
349 std::cout <<
"Inside analyze(). " << std::endl;
353 iEvent.
getByToken(triggerResultsToken_, triggerResults);
358 iEvent.
getByToken(aodTriggerToken_, aodTriggerEvent);
359 if (!aodTriggerEvent.
isValid())
363 unordered_map<string, bool> firedMap = acceptMap;
364 for (
auto plot : plotList)
366 if (firedMap[
plot->pathName])
372 if (
plot->pathIndex > 0 && triggerResults->
accept(
plot->pathIndex) && hltConfig_.saveTags(
plot->moduleName)) {
374 pathName =
plot->pathName;
375 triggerAccept =
true;
376 }
else if (
plot->pathIndexOR > 0 && triggerResults->
accept(
plot->pathIndexOR) &&
377 hltConfig_.saveTags(
plot->moduleNameOR)) {
378 if (firedMap[
plot->pathNameOR])
381 pathName =
plot->pathNameOR;
382 triggerAccept =
true;
386 unsigned int moduleFilterIndex = aodTriggerEvent->
filterIndex(moduleFilter);
388 if (moduleFilterIndex + 1 > aodTriggerEvent->
sizeFilters())
399 if (pathName == caloAK4JetPt_.pathName) {
400 for (
const auto&
key : keys) {
401 caloAK4JetPt_.ME->Fill(objects[
key].
pt());
402 caloAK4JetEta_.ME->Fill(objects[
key].
eta());
403 caloAK4JetPhi_.ME->Fill(objects[
key].phi());
407 else if (pathName == pfAK4JetPt_.pathName) {
408 for (
const auto&
key : keys) {
409 pfAK4JetPt_.ME->Fill(objects[
key].
pt());
410 pfAK4JetEta_.ME->Fill(objects[
key].
eta());
411 pfAK4JetPhi_.ME->Fill(objects[
key].phi());
415 else if (pathName == caloDiAK4JetPt_.pathName) {
416 for (
const auto&
key : keys) {
417 caloDiAK4JetPt_.ME->Fill(objects[
key].
pt());
418 caloDiAK4JetEta_.ME->Fill(objects[
key].
eta());
419 caloDiAK4JetPhi_.ME->Fill(objects[
key].phi());
423 else if (pathName == pfDiAK4JetPt_.pathName) {
424 for (
const auto&
key : keys) {
425 pfDiAK4JetPt_.ME->Fill(objects[
key].
pt());
426 pfDiAK4JetEta_.ME->Fill(objects[
key].
eta());
427 pfDiAK4JetPhi_.ME->Fill(objects[
key].phi());
431 else if (pathName == photonPt_.pathName) {
432 for (
const auto&
key : keys) {
433 photonPt_.ME->Fill(objects[
key].
pt());
434 photonEta_.ME->Fill(objects[
key].
eta());
435 photonPhi_.ME->Fill(objects[
key].phi());
439 else if (pathName == photonPPPt_.pathName) {
440 for (
const auto&
key : keys) {
441 photonPPPt_.ME->Fill(objects[
key].
pt());
442 photonPPEta_.ME->Fill(objects[
key].
eta());
443 photonPPPhi_.ME->Fill(objects[
key].phi());
447 else if (pathName == caloBJetPt_.pathName) {
448 for (
const auto&
key : keys) {
449 caloBJetPt_.ME->Fill(objects[
key].
pt());
450 caloBJetEta_.ME->Fill(objects[
key].
eta());
451 caloBJetPhi_.ME->Fill(objects[
key].phi());
455 else if (pathName == pfBJetPt_.pathName) {
456 for (
const auto&
key : keys) {
457 pfBJetPt_.ME->Fill(objects[
key].
pt());
458 pfBJetEta_.ME->Fill(objects[
key].
eta());
459 pfBJetPhi_.ME->Fill(objects[
key].phi());
463 else if (pathName == electronPt_.pathName) {
464 for (
const auto&
key : keys) {
465 electronPt_.ME->Fill(objects[
key].
pt());
466 electronEta_.ME->Fill(objects[
key].
eta());
467 electronPhi_.ME->Fill(objects[
key].phi());
469 }
else if (pathName == l3muon3Pt_.pathName) {
470 for (
const auto&
key : keys) {
471 l3muon3Pt_.ME->Fill(objects[
key].
pt());
472 l3muon3Eta_.ME->Fill(objects[
key].
eta());
473 l3muon3Phi_.ME->Fill(objects[
key].phi());
475 }
else if (pathName == l2muon12Pt_.pathName) {
476 for (
const auto&
key : keys) {
477 l2muon12Pt_.ME->Fill(objects[
key].
pt());
478 l2muon12Eta_.ME->Fill(objects[
key].
eta());
479 l2muon12Phi_.ME->Fill(objects[
key].phi());
481 }
else if (pathName == l3muon12Pt_.pathName) {
482 for (
const auto&
key : keys) {
483 l3muon12Pt_.ME->Fill(objects[
key].
pt());
484 l3muon12Eta_.ME->Fill(objects[
key].
eta());
485 l3muon12Phi_.ME->Fill(objects[
key].phi());
495 else if (pathName == pAL1DoubleMuZMass_.pathName) {
496 const double mu_mass(.105658);
497 unsigned int kCnt0 = 0;
498 for (
const auto& key0 : keys) {
499 unsigned int kCnt1 = 0;
500 for (
const auto& key1 : keys) {
504 TLorentzVector mu1, mu2, dimu;
505 mu1.SetPtEtaPhiM(objects[key0].
pt(), objects[key0].
eta(), objects[key0].phi(), mu_mass);
506 mu2.SetPtEtaPhiM(objects[key1].
pt(), objects[key1].
eta(), objects[key1].phi(), mu_mass);
508 if (dimu.M() > pAL1DoubleMuZMass_.xMin && dimu.M() < pAL1DoubleMuZMass_.xMax)
509 pAL1DoubleMuZMass_.ME->Fill(dimu.M());
515 }
else if (pathName == pAL2DoubleMuZMass_.pathName) {
516 const double mu_mass(.105658);
517 unsigned int kCnt0 = 0;
518 for (
const auto& key0 : keys) {
519 unsigned int kCnt1 = 0;
520 for (
const auto& key1 : keys) {
523 if (
abs(objects[key0].
id()) == 13 &&
524 (objects[key0].
id() + objects[key1].
id() == 0)) {
525 TLorentzVector mu1, mu2, dimu;
526 mu1.SetPtEtaPhiM(objects[key0].
pt(), objects[key0].
eta(), objects[key0].phi(), mu_mass);
527 mu2.SetPtEtaPhiM(objects[key1].
pt(), objects[key1].
eta(), objects[key1].phi(), mu_mass);
529 if (dimu.M() > pAL2DoubleMuZMass_.xMin && dimu.M() < pAL2DoubleMuZMass_.xMax)
530 pAL2DoubleMuZMass_.ME->Fill(dimu.M());
537 }
else if (pathName == pAL3DoubleMuZMass_.pathName) {
538 const double mu_mass(.105658);
539 unsigned int kCnt0 = 0;
540 for (
const auto& key0 : keys) {
541 unsigned int kCnt1 = 0;
542 for (
const auto& key1 : keys) {
545 if (
abs(objects[key0].
id()) == 13 &&
546 (objects[key0].
id() + objects[key1].
id() == 0)) {
547 TLorentzVector mu1, mu2, dimu;
548 mu1.SetPtEtaPhiM(objects[key0].
pt(), objects[key0].
eta(), objects[key0].phi(), mu_mass);
549 mu2.SetPtEtaPhiM(objects[key1].
pt(), objects[key1].
eta(), objects[key1].phi(), mu_mass);
551 if (dimu.M() > pAL3DoubleMuZMass_.xMin && dimu.M() < pAL3DoubleMuZMass_.xMax)
552 pAL3DoubleMuZMass_.ME->Fill(dimu.M());
566 double end = get_wall_time();
568 wallTime_.ME->Fill(wallTime);
574 std::cout <<
"Calling beginRun. " << std::endl;
576 if (hltConfig_.init(iRun, iSetup, processName_, changed)) {
578 std::cout <<
"Extracting HLTconfig. " << std::endl;
582 string pathName_noVersion;
583 vector<string>
triggerPaths = hltConfig_.triggerNames();
585 for (
const auto&
pathName : triggerPaths) {
586 pathName_noVersion = hltConfig_.removeVersion(
pathName);
587 for (
auto plot : plotList) {
588 if (
plot->pathName == pathName_noVersion) {
589 (*plot).pathIndex = hltConfig_.triggerIndex(
pathName);
590 }
else if (
plot->pathNameOR == pathName_noVersion) {
591 (*plot).pathIndexOR = hltConfig_.triggerIndex(
pathName);
595 vector<hltPlot*> plotList_temp;
596 for (
auto plot : plotList) {
597 if (
plot->pathIndex > 0 ||
plot->pathIndexOR > 0) {
598 plotList_temp.push_back(
plot);
599 acceptMap[
plot->pathName] =
false;
600 if (
plot->pathIndexOR > 0)
601 acceptMap[
plot->pathNameOR] =
false;
605 plotList = plotList_temp;
606 plotList_temp.clear();
613 std::cout <<
"Calling endRun. " << std::endl;
626 ibooker.setCurrentFolder(mainShifterFolder);
628 ibooker.book1D(wallTime_.plotLabel, wallTime_.pathName, wallTime_.nBins, wallTime_.xMin, wallTime_.xMax);
629 wallTime_.ME->setAxisTitle(wallTime_.xAxisLabel);
631 for (
auto plot : plotList) {
633 if (!
plot->pathNameOR.empty())
634 display_pathNames =
plot->pathName +
" OR " +
plot->pathNameOR;
636 if (
plot->displayInPrimary) {
637 ibooker.setCurrentFolder(mainShifterFolder);
638 (*plot).ME = ibooker.book1D(
plot->plotLabel, display_pathNames.c_str(),
plot->nBins,
plot->xMin,
plot->xMax);
639 (*plot).ME->setAxisTitle(
plot->xAxisLabel);
642 ibooker.setCurrentFolder(backupFolder);
643 (*plot).ME = ibooker.book1D(
plot->plotLabel, display_pathNames.c_str(),
plot->nBins,
plot->xMin,
plot->xMax);
644 (*plot).ME->setAxisTitle(
plot->xAxisLabel);
651 if (gettimeofday(&time,
nullptr))
653 return (
double)time.tv_sec + (double)time.tv_usec * .000001;
~HLTObjectMonitorProtonLead() override
edm::ParameterSet caloAK4JetEta_pset
edm::EDGetTokenT< trigger::TriggerEvent > aodTriggerToken_
T getParameter(std::string const &) const
edm::ParameterSet caloBJetEta_pset
trigger::size_type sizeFilters() const
edm::ParameterSet l3muon3Eta_pset
edm::ParameterSet pfAK4JetPhi_pset
bool getByToken(EDGetToken token, Handle< PROD > &result) const
hltPlot pAL1DoubleMuZMass_
edm::ParameterSet caloDiAK4JetPt_pset
bool accept() const
Has at least one path accepted the event?
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
edm::ParameterSet l3muon3Pt_pset
unordered_map< string, bool > acceptMap
edm::ParameterSet pfAK4JetPt_pset
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
edm::ParameterSet l2muon12Eta_pset
edm::ParameterSet electronEta_pset
edm::ParameterSet wallTime_pset
edm::ParameterSet l3muon12Phi_pset
edm::ParameterSet photonPt_pset
#define DEFINE_FWK_MODULE(type)
edm::ParameterSet pfDiAK4JetPt_pset
edm::ParameterSet caloBJetPt_pset
hltPlot pAL2DoubleMuZMass_
const TriggerObjectCollection & getObjects() const
void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
edm::ParameterSet electronPhi_pset
edm::ParameterSet l3muon12Pt_pset
Abs< T >::type abs(const T &t)
edm::ParameterSet pfBJetPhi_pset
static std::string const triggerResults
unordered_map< hltPlot *, edm::ParameterSet * > plotMap
edm::ParameterSet photonPhi_pset
edm::ParameterSet pfDiAK4JetPhi_pset
edm::ParameterSet pAL1DoubleMuZMass_pset
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
edm::ParameterSet photonPPEta_pset
edm::ParameterSet pfDiAK4JetEta_pset
edm::ParameterSet photonPPPhi_pset
HLTConfigProvider hltConfig_
edm::ParameterSet pAL2DoubleMuZMass_pset
edm::ParameterSet caloBJetPhi_pset
std::vector< size_type > Keys
HLTObjectMonitorProtonLead(const edm::ParameterSet &)
example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
edm::ParameterSet pAL3DoubleMuZMass_pset
edm::ParameterSet l2muon12Phi_pset
edm::ParameterSet photonPPPt_pset
edm::ParameterSet electronPt_pset
void dqmEndRun(edm::Run const &, edm::EventSetup const &) override
hltPlot pAL3DoubleMuZMass_
edm::ParameterSet caloDiAK4JetPhi_pset
edm::ParameterSet pfAK4JetEta_pset
edm::ParameterSet pfBJetEta_pset
double get_wall_time(void)
vector< hltPlot * > plotList
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
edm::ParameterSet photonEta_pset
edm::ParameterSet caloAK4JetPt_pset
edm::ParameterSet l3muon3Phi_pset
static std::string const triggerPaths
edm::ParameterSet caloAK4JetPhi_pset
edm::ParameterSet caloDiAK4JetEta_pset
edm::ParameterSet pfBJetPt_pset
edm::ParameterSet l3muon12Eta_pset
edm::ParameterSet l2muon12Pt_pset
void analyze(const edm::Event &, const edm::EventSetup &) override