38 #include "TLorentzVector.h" 40 #include <unordered_map> 45 std::pair<MonitorElement*,bool>
nME;
46 std::pair<MonitorElement*,bool>
etaME;
47 std::pair<MonitorElement*,bool>
phiME;
48 std::pair<MonitorElement*,bool>
ptME;
49 std::pair<MonitorElement*,bool>
massME;
51 std::pair<MonitorElement*,bool>
csvME;
55 std::pair<MonitorElement*,bool>
mrME;
56 std::pair<MonitorElement*,bool>
rsqME;
57 std::pair<MonitorElement*,bool>
dxyME;
58 std::pair<MonitorElement*,bool>
dzME;
60 std::pair<MonitorElement*,bool>
dRME;
62 std::pair<MonitorElement*,bool>
q1q2ME;
96 using std::unordered_map;
114 bool isHEP17(
double eta,
double phi);
115 bool isHEM17(
double eta,
double phi);
151 const double MASS_MU = .105658;
161 double MAX_PHI = 3.2;
164 N_PHI, -MAX_PHI, MAX_PHI
170 N_CSV, -MAX_CSV, MAX_CSV
180 double MAX_PHI_HEP17 = -0.52;
181 double MIN_PHI_HEP17 = -0.87;
184 N_PHI_HEP17, MIN_PHI_HEP17, MAX_PHI_HEP17
186 double MAX_ETA_HEP17 = 3.0;
187 double MIN_ETA_HEP17 = 1.3;
190 N_ETA_HEP17, MIN_ETA_HEP17, MAX_ETA_HEP17
194 N_ETA_HEP17, -MAX_ETA_HEP17, MIN_ETA_HEP17
210 std::make_pair<MonitorElement*,bool>(
nullptr,
false),
211 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_eta") ),
212 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_phi") ),
213 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_pt") ),
214 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_mass") ),
215 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_energy") ),
216 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_csv") ),
217 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_etaVSphi") ),
218 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_pt_HEP17") ),
219 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_pt_HEM17") ),
220 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_MR") ),
221 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_RSQ") ),
222 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_dxy") ),
223 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_dz") ),
224 std::make_pair<MonitorElement*,bool>(
nullptr,pset.
getParameter<
bool>(
"displayInPrimary_dimass") ),
225 std::make_pair<MonitorElement*,bool>(
nullptr,
false),
226 std::make_pair<MonitorElement*,bool>(
nullptr,
false),
227 std::make_pair<MonitorElement*,bool>(
nullptr,
false),
236 pset.
getParameter<std::vector<double> >(
"massBINNING" ),
239 pset.
getParameter<std::vector<double> >(
"dimassBINNING" ),
259 for (
const auto &
pset : plotPSETS_ )
260 hltPlots_.push_back( getPlotPSet(
pset) );
264 if ( (eta >= MIN_ETA_HEP17 && eta <= MAX_ETA_HEP17) &&
265 (phi >= MIN_PHI_HEP17 && phi <= MAX_PHI_HEP17) )
return true;
270 if ( (eta >= -MAX_ETA_HEP17 && eta <= -MIN_ETA_HEP17) &&
271 (phi >= MIN_PHI_HEP17 && phi <= MAX_PHI_HEP17) )
return true;
279 : TopFolder_ ( iConfig.getParameter<
std::
string>(
"TopFolder") )
280 , label_ ( iConfig.getParameter<
std::
string>(
"label") )
281 , processName_ ( iConfig.getParameter<
std::
string>(
"processName") )
283 , debug_ ( iConfig.getUntrackedParameter<bool>(
"debug",
false) )
284 , triggerResultsToken_ ( consumes<
edm::TriggerResults> (iConfig.getParameter<
edm::InputTag>(
"TriggerResults") ) )
285 , triggerEventToken_ ( consumes<
trigger::TriggerEvent>(iConfig.getParameter<
edm::InputTag>(
"TriggerSummary") ) )
286 , beamSpot_ ( iConfig.getParameter<
edm::InputTag>(
"beamspot") )
287 , beamSpotToken_ ( consumes<
reco::
BeamSpot>(beamSpot_) )
288 , caloJetBTagsToken_ ( consumes<
reco::
JetTagCollection>(iConfig.getParameter<
edm::InputTag>(
"caloJetBTags") ) )
290 , muCandidates_ ( iConfig.getParameter<
edm::InputTag>(
"muCandidates") )
291 , muCandidatesToken_ ( consumes<
std::vector<
reco::RecoChargedCandidate> >(muCandidates_) )
292 , eleCandidates_ ( iConfig.getParameter<
edm::InputTag>(
"eleCandidates") )
293 , eleCandidatesToken_ ( consumes<
std::vector<
reco::RecoChargedCandidate> >(eleCandidates_) )
325 if (!triggerResults.
isValid())
return;
329 if (!triggerEvent.
isValid())
return;
350 if (
plot.pathIDX <= 0 )
continue;
354 std::cout <<
plot.pathNAME <<
" --> bin: " << ibin << std::endl;
360 std::cout <<
"objects: " << objects.size() << std::endl;
362 bool moduleFOUND =
false;
364 for (
const auto &
module : moduleNames ) {
365 if (
module ==
plot.moduleNAME) moduleFOUND =
true;
368 std::cout <<
plot.moduleNAME << (moduleFOUND ?
"" :
"NOT" ) <<
" found in the list of modules" << std::endl;
371 for (
const auto &
module : moduleNames ) {
374 if ( idx < triggerEvent->sizeFilters() )
381 unsigned int moduleIDX = triggerEvent->
filterIndex(moduleName);
383 std::cout <<
"moduleNAME: " <<
plot.moduleNAME <<
" --> " << moduleIDX << std::endl;
386 LogDebug (
"HLTObjectsMonitor") <<
plot.pathNAME <<
" " <<
plot.moduleNAME <<
" is not available ! please, fix update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py";
392 std::cout <<
"keys: " << keys.size() << std::endl;
394 plot.nME.first->Fill(keys.size());
398 for (
const auto &
key : keys ) {
400 double pt = objects[
key].pt();
401 double eta = objects[
key].eta();
402 double phi = objects[
key].phi();
403 double mass = objects[
key].mass();
404 double energy = objects[
key].energy();
405 int id = objects[
key].id();
407 std::cout <<
"object ID " <<
id <<
" mass: " << mass << std::endl;
410 plot.ptME.first->Fill(pt);
411 if (
plot.doPlotETA )
plot.etaME.first->Fill(eta);
412 plot.phiME.first->Fill(phi);
414 if (
plot.doPlotCSV ) {
417 if ( !caloJetBTags.
isValid() )
plot.csvME.first->Fill(-10.);
419 for (
auto it = caloJetBTags->
begin();
420 it != caloJetBTags->
end(); ++it ) {
421 double dR =
deltaR(eta,phi,it->first->eta(),it->first->phi());
423 std::cout <<
"[HLTObjectsMonitor::analyze] deltaR: " << dR <<
" matched ? " << ( dR <= 0.4 ?
"YEAP" :
"NOPE" ) << std::endl;
424 plot.csvME.first->Fill(it->second);
428 }
else if (
plot.doPF ) {
429 if ( !pfJetBTags.
isValid() )
plot.csvME.first->Fill(-10.);
431 for (
auto it = pfJetBTags->
begin();
432 it != pfJetBTags->
end(); ++it ) {
433 double dR =
deltaR(eta,phi,it->first->eta(),it->first->phi());
435 std::cout <<
"[HLTObjectsMonitor::analyze] deltaR: " << dR <<
" matched ? " << ( dR <= 0.4 ?
"YEAP" :
"NOPE" ) << std::endl;
436 plot.csvME.first->Fill(it->second);
441 if (
plot.doPlotMASS )
plot.massME.first->Fill(mass);
442 if (
plot.doPlotENERGY )
plot.energyME.first->Fill(energy);
443 if (
plot.doPlot2D )
plot.etaVSphiME.first->Fill(eta,phi);
444 if (
plot.doPlotHEP17 ) {
445 if (
isHEP17(eta,phi) )
plot.ptMEhep17.first->Fill(pt);
446 if (
isHEM17(eta,phi) )
plot.ptMEhem17.first->Fill(pt);
450 MR = objects[
key].px();
451 RSQ = objects[
key].py();
454 if (
plot.doPlotDXY ) {
457 dxy =
dxyFinder(eta,phi,muCandidates, beamspot, 0.1);
459 dxy =
dxyFinder(eta,phi,eleCandidates, beamspot, 0.1);
460 plot.dxyME.first->Fill(dxy);
463 if (
plot.doPlotRazor ) {
464 plot.mrME.first->Fill(MR);
465 plot.rsqME.first->Fill(RSQ);
468 if ( keys.size() < 2 ) {
469 if (
plot.doPlotDiMass ||
plot.doPlotDZ )
470 LogDebug (
"HLTObjectsMonitor") <<
plot.pathNAME <<
" " <<
plot.moduleNAME <<
" # objects is (" << keys.size() <<
") less than 2 ! you probably want to either change the moduleNAME or switch off di-object system plots (doPlotDZ: " <<
plot.doPlotDZ <<
" doPlotDiMass: " <<
plot.doPlotDiMass <<
") in DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py)";
472 for (
const auto &
key : keys ) {
473 double pt = objects[
key].pt();
474 double eta = objects[
key].eta();
475 double phi = objects[
key].phi();
476 int id = objects[
key].id();
478 unsigned int kCnt0 = 0;
482 v1.SetPtEtaPhiM(pt,eta,phi,
MASS_MU);
484 v1.SetPtEtaPhiM(pt,eta,phi,0);
486 unsigned int kCnt1 = 0;
487 for (
const auto & key1: keys ) {
489 if (
key != key1 && kCnt1 > kCnt0) {
491 double pt2 = objects[key1].phi();
492 double eta2 = objects[key1].eta();
493 double phi2 = objects[key1].phi();
494 int id2 = objects[key1].id();
496 double dR =
deltaR( eta, phi, eta2, phi2);
497 plot.dRME.first->Fill(dR);
498 plot.dRetaVSphiME.first->Fill(eta,phi,dR);
500 int q1 = (
id==0 ? 0 :
id/
abs(
id) );
501 int q2 = ( id2==0 ? 0 : id2/
abs(id2) );
503 plot.q1q2ME.first->Fill(q1q2);
505 if (
abs(
id) !=
abs(id2) )
506 edm::LogWarning (
"HLTObjectsMonitor") <<
"objects have different ID !?!";
508 if( (
id+id2 ) == 0 ) {
511 if (
abs( id2 ) == 13 )
512 v2.SetPtEtaPhiM(pt2,eta2,phi2,
MASS_MU);
514 v2.SetPtEtaPhiM(pt2,eta2,phi2, 0);
516 if (
plot.doPlotDiMass ) {
517 TLorentzVector
v = v1+v2;
518 plot.dimassME.first->Fill(v.M());
521 if (
plot.doPlotDZ ) {
524 dz =
dzFinder(eta,phi,eta2,phi2,muCandidates, 0.1);
526 dz =
dzFinder(eta,phi,eta2,phi2,eleCandidates, 0.1);
527 plot.dzME.first->Fill(dz);
550 if (
debug_)
std::cout <<
"[HLTObjectsMonitor::dqmBeginRun] extracting HLTconfig" << std::endl;
557 std::cout <<
"[HLTObjectsMonitor::dqmBeginRun] triggerPaths: " << triggerPaths.size() <<
" <--> " <<
hltPlots_.size() << std::endl;
559 for (
const auto & pathName : triggerPaths) {
562 std::cout <<
"[HLTObjectsMonitor::dqmBeginRun] " << pathName << std::endl;
567 if (
plot.pathNAME == pathName_noVersion) {
570 if (
plot.pathIDX <= 0 ||
plot.pathIDX ==
int(triggerPaths.size()) )
578 std::cout <<
"plot: " <<
plot.pathNAME <<
" --> pathIDX: " <<
plot.pathIDX << std::endl;
579 std::cout <<
"[HLTObjectsMonitor::dqmBeginRun] DONE" << std::endl;
588 std::cout <<
"[HLTObjectsMonitor::bookHistograms]" << std::endl;
606 std::cout <<
"booking plots for " <<
plot.label << std::endl;
608 if (
plot.pathIDX <= 0 ) {
609 LogDebug (
"HLTObjectsMonitor") <<
plot.pathNAME <<
" is not available in the HLT menu ! no plots are going to be booked for it (update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py)";
613 std::cout <<
"booking histograms for " <<
plot.pathNAME << std::endl;
616 if (
plot.nME.second )
621 name =
plot.label+
"_nobjects";
622 title =
plot.pathNAME+
" # objects";
623 plot.nME.first = ibooker.
book1D(name,title,20,-0.5,19.5);
624 plot.nME.first->setAxisTitle(
plot.xTITLE+
" # objects");
627 if (
plot.ptME.second )
632 name =
plot.label+
"_pt";
633 title =
plot.pathNAME+
" p_T";
634 int nbins = (
plot.ptBINNING).
size()-1;
635 std::vector<float> fbinning((
plot.ptBINNING).begin(),(
plot.ptBINNING).
end());
636 float* arr = &fbinning[0];
637 plot.ptME.first = ibooker.
book1D(name,title,nbins,arr);
638 plot.ptME.first->setAxisTitle(
plot.xTITLE+
" p_{T} [GeV]");
642 if (
plot.phiME.second )
647 name =
plot.label+
"_phi";
648 title =
plot.pathNAME+
" #phi";
649 int nbins = (
plot.phiBINNING).
size()-1;
650 std::vector<float> fbinning((
plot.phiBINNING).begin(),(
plot.phiBINNING).
end());
651 float* arr = &fbinning[0];
652 plot.phiME.first = ibooker.
book1D(name,title,nbins,arr);
653 plot.phiME.first->setAxisTitle(
plot.xTITLE+
" #phi [rad]");
656 if (
plot.doPlotETA ) {
657 if (
plot.etaME.second )
662 name =
plot.label+
"_eta";
663 title =
plot.pathNAME+
" #eta";
664 int nbins = (
plot.etaBINNING).
size()-1;
665 std::vector<float> fbinning((
plot.etaBINNING).begin(),(
plot.etaBINNING).
end());
666 float* arr = &fbinning[0];
668 plot.etaME.first = ibooker.
book1D(name,title,nbins,arr);
669 plot.etaME.first->setAxisTitle(
plot.xTITLE+
" #eta");
672 if (
plot.doPlotMASS ) {
673 if (
plot.massME.second )
678 name =
plot.label+
"_mass";
679 title =
plot.pathNAME+
" mass";
680 int nbins = (
plot.massBINNING).
size()-1;
681 std::vector<float> fbinning((
plot.massBINNING).begin(),(
plot.massBINNING).
end());
682 float* arr = &fbinning[0];
684 plot.massME.first = ibooker.
book1D(name,title,nbins,arr);
685 plot.massME.first->setAxisTitle(
plot.xTITLE+
" mass [GeV]");
688 if (
plot.doPlotENERGY ) {
689 if (
plot.energyME.second )
694 name =
plot.label+
"_energy";
695 title =
plot.pathNAME+
" energy";
696 int nbins = (
plot.ptBINNING).
size()-1;
697 std::vector<float> fbinning((
plot.ptBINNING).begin(),(
plot.ptBINNING).
end());
698 float* arr = &fbinning[0];
700 plot.energyME.first = ibooker.
book1D(name,title,nbins,arr);
701 plot.energyME.first->setAxisTitle(
plot.xTITLE+
" energy [GeV]");
704 if (
plot.doPlotCSV ) {
705 if (
plot.csvME.second )
710 name =
plot.label+
"_csv";
711 title =
plot.pathNAME+
" CSV";
714 plot.csvME.first->setAxisTitle(
plot.xTITLE+
" CSV discriminator");
717 if (
plot.doPlot2D ) {
718 if (
plot.etaVSphiME.second )
723 name =
plot.label+
"_etaVSphi";
724 title =
plot.pathNAME+
" #eta vs #phi";
725 int nbinsX = (
plot.etaBINNING).
size()-1;
726 std::vector<float> fbinningX((
plot.etaBINNING).begin(),(
plot.etaBINNING).
end());
727 float* arrX = &fbinningX[0];
728 int nbinsY = (
plot.phiBINNING).
size()-1;;
729 std::vector<float> fbinningY((
plot.phiBINNING).begin(),(
plot.phiBINNING).
end());
730 float* arrY = &fbinningY[0];
731 plot.etaVSphiME.first = ibooker.
book2D(name,title,nbinsX,arrX,nbinsY,arrY);
732 plot.etaVSphiME.first->setAxisTitle(
plot.xTITLE+
" #eta",1);
733 plot.etaVSphiME.first->setAxisTitle(
plot.xTITLE+
" #phi",2);
736 if (
plot.doPlotHEP17 ) {
738 if (
plot.ptMEhep17.second )
743 int nbins = (
plot.ptBINNING).
size()-1;
744 std::vector<float> fbinning((
plot.ptBINNING).begin(),(
plot.ptBINNING).
end());
745 float* arr = &fbinning[0];
747 name =
plot.label+
"_pt_HEP17";
748 title =
plot.pathNAME+
" p_{T} HEP17";
749 plot.ptMEhep17.first = ibooker.
book1D(name,title,nbins,arr);
750 plot.ptMEhep17.first->setAxisTitle(
plot.xTITLE+
" p_{T} [GeV]",1);
752 if (
plot.ptMEhem17.second )
757 name =
plot.label+
"_pt_HEM17";
758 title =
plot.pathNAME+
" p_{T} HEM17";
759 plot.ptMEhem17.first = ibooker.
book1D(name,title,nbins,arr);
760 plot.ptMEhem17.first->setAxisTitle(
plot.xTITLE+
" p_{T} [GeV]",1);
763 if (
plot.doPlotRazor ) {
764 if (
plot.mrME.second )
769 name =
plot.label+
"_mr";
770 title =
plot.pathNAME+
" M_{R}";
771 plot.mrME.first = ibooker.
book1D(name,title,100,0.,100.);
772 plot.mrME.first->setAxisTitle(
plot.xTITLE+
" M_{R} [GeV]",1);
774 if (
plot.rsqME.second )
779 name =
plot.label+
"_rsq";
780 title =
plot.pathNAME+
" RSQ";
781 plot.rsqME.first = ibooker.
book1D(name,title,100,0.,100.);
782 plot.rsqME.first->setAxisTitle(
plot.xTITLE+
" RSQ [GeV]",1);
786 if (
plot.doPlotDXY ) {
788 if (
plot.dxyME.second )
793 name =
plot.label+
"_dxy";
794 title =
plot.pathNAME+
" d_{xy}";
795 int nbins = (
plot.dxyBINNING).
size()-1;
796 std::vector<float> fbinning((
plot.dxyBINNING).begin(),(
plot.dxyBINNING).
end());
797 float* arr = &fbinning[0];
798 plot.dxyME.first = ibooker.
book1D(name,title,nbins,arr);
799 plot.dxyME.first->setAxisTitle(
plot.xTITLE+
" d_{xy} [cm]");
803 if (
plot.doPlotDZ ) {
805 if (
plot.dzME.second )
810 name =
plot.label+
"_dz";
811 title =
plot.pathNAME+
" d_{z}";
812 int nbins = (
plot.dzBINNING).
size()-1;
813 std::vector<float> fbinning((
plot.dzBINNING).begin(),(
plot.dzBINNING).
end());
814 float* arr = &fbinning[0];
815 plot.dzME.first = ibooker.
book1D(name,title,nbins,arr);
816 plot.dzME.first->setAxisTitle(
plot.xTITLE+
" d_{z} [cm]");
820 if (
plot.dRME.second )
825 name =
plot.label+
"_dR";
826 title =
plot.pathNAME+
" di-object dR";
827 plot.dRME.first = ibooker.
book1D(name,title,50,0.,5.);
828 plot.dRME.first->setAxisTitle(
plot.xTITLE+
" dR_{obj,obj}");
830 if (
plot.dRetaVSphiME.second )
835 name =
plot.label+
"_dR_etaVSphi";
836 title =
plot.pathNAME+
" di-object dR in the #eta-#phi plane (of 1st obj)";
837 plot.dRetaVSphiME.first = ibooker.
bookProfile2D(name,title,60,-3.,3.,64,-3.2,3.2,0.,5.);
838 plot.dRetaVSphiME.first->setAxisTitle(
plot.xTITLE+
" #eta",1);
839 plot.dRetaVSphiME.first->setAxisTitle(
plot.xTITLE+
" #phi",2);
840 plot.dRetaVSphiME.first->setAxisTitle(
plot.xTITLE+
" dR_{obj,obj}",3);
842 if (
plot.q1q2ME.second )
847 name =
plot.label+
"_q1q2";
848 title =
plot.pathNAME+
" di-object q1xq2";
849 plot.q1q2ME.first = ibooker.
book1D(name,title,3,-1.,1.);
850 plot.q1q2ME.first->setAxisTitle(
plot.xTITLE+
" q_{obj1} x q_{obj2}");
852 if (
plot.doPlotDiMass ) {
854 if (
plot.dimassME.second )
859 name =
plot.label+
"_dimass";
860 title =
plot.pathNAME+
" di-object mass";
861 int nbins = (
plot.dimassBINNING).
size()-1;
862 std::vector<float> fbinning((
plot.dimassBINNING).begin(),(
plot.dimassBINNING).
end());
863 float* arr = &fbinning[0];
864 plot.dimassME.first = ibooker.
book1D(name,title,nbins,arr);
865 plot.dimassME.first->setAxisTitle(
plot.xTITLE+
" m_{obj,obj} [GeV]");
871 std::cout <<
"[HLTObjectsMonitor::bookHistograms] DONE" << std::endl;
881 <<
" by switching OFF doPlotDXY or updating the InputTag collection";
885 LogDebug (
"HLTObjectsMonitor") <<
beamSpot_ <<
" is not valid ! please, update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py" 886 <<
" by switching OFF doPlotDXY or updating the InputTag collection";
891 for (reco::RecoChargedCandidateCollection::const_iterator candidate = candidates->begin();
892 candidate != candidates->end(); ++candidate) {
894 if (
deltaR( eta,phi,candidate->eta(),candidate->phi() ) < dRcut ) {
896 dxy = (-(candidate->vx()-beamspot->
x0()) * candidate->py() + (candidate->vy()-beamspot->
y0()) * candidate->px())/candidate->pt();
901 edm::LogWarning (
"HLTObjectsMonitor") <<
"trigger object does not match ( dR > " << dRcut <<
") to any of the candidates in either " 913 <<
" by switching OFF doPlotDZ or updating the InputTag collection";
919 bool matched1 =
false;
920 bool matched2 =
false;
921 for (reco::RecoChargedCandidateCollection::const_iterator candidate = candidates->begin();
922 candidate != candidates->end(); ++candidate) {
924 if (
deltaR( eta1,phi1,candidate->eta(),candidate->phi() ) < dRcut ) {
928 std::cout <<
"cand1: " << cand1->
pt() <<
" " << cand1->
eta() <<
" " << cand1->
phi() << std::endl;
933 LogDebug (
"HLTObjectsMonitor") <<
"trigger object1 does not match ( dR > " << dRcut <<
") to any of the candidates in either " 938 for (reco::RecoChargedCandidateCollection::const_iterator candidate = candidates->begin();
939 candidate != candidates->end(); ++candidate) {
941 std::cout <<
"candidate: " << candidate->pt() <<
" cand1: " << cand1->
pt() << std::endl;
942 std::cout <<
"candidate: " << candidate->eta() <<
" cand1: " << cand1->
eta() << std::endl;
943 std::cout <<
"candidate: " << candidate->phi() <<
" cand1: " << cand1->
phi() << std::endl;
945 if (&*candidate == cand1)
continue;
947 if (
deltaR( eta2,phi2,candidate->eta(),candidate->phi() ) < dRcut ) {
951 std::cout <<
"cand2: " << cand2->
pt() <<
" " << cand2->
eta() <<
" " << cand2->
phi() << std::endl;
956 LogDebug (
"HLTObjectsMonitor") <<
"trigger object2 does not match ( dR > " << dRcut <<
") to any of the candidates in either " 961 dz = cand1->
vz() - cand2->
vz();
edm::EDGetTokenT< reco::JetTagCollection > pfJetBTagsToken_
T getParameter(std::string const &) const
virtual double pt() const final
transverse momentum
T getUntrackedParameter(std::string const &, T const &) const
std::vector< double > phiBINNING
bool saveTags(const std::string &module) const
Is module an L3 filter (ie, tracked saveTags=true)
std::pair< MonitorElement *, bool > dzME
std::vector< hltPlot > hltPlots_
std::pair< MonitorElement *, bool > dimassME
std::pair< MonitorElement *, bool > csvME
std::string backupFolder_
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
trigger::size_type sizeFilters() const
const MEbinning csv_binning_
std::pair< MonitorElement *, bool > massME
edm::InputTag muCandidates_
edm::EDGetTokenT< reco::JetTagCollection > caloJetBTagsToken_
std::pair< MonitorElement *, bool > energyME
virtual double eta() const final
momentum pseudorapidity
std::vector< double > etaBINNING
bool getByToken(EDGetToken token, Handle< PROD > &result) const
def analyze(function, filename, filter=None)
std::vector< double > dimassBINNING
static hltPlot getPlotPSet(edm::ParameterSet pset)
#define DEFINE_FWK_MODULE(type)
std::pair< MonitorElement *, bool > etaVSphiME
std::pair< MonitorElement *, bool > dRetaVSphiME
bool accept() const
Has at least one path accepted the event?
const std::vector< std::string > & triggerNames() const
names of trigger paths
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::EDGetTokenT< reco::BeamSpot > beamSpotToken_
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
const_iterator end() const
std::pair< MonitorElement *, bool > ptMEhem17
JetFloatAssociation::Container JetTagCollection
std::pair< MonitorElement *, bool > q1q2ME
void bookHistograms(fwlite::EventContainer &eventCont)
static const std::string removeVersion(const std::string &trigger)
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
virtual void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
virtual double phi() const final
momentum azimuthal angle
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > eleCandidatesToken_
bool isHEP17(double eta, double phi)
std::pair< MonitorElement *, bool > etaME
std::pair< MonitorElement *, bool > phiME
std::string moduleName(Provenance const &provenance)
std::pair< MonitorElement *, bool > dxyME
HLTObjectsMonitor(const edm::ParameterSet &)
edm::InputTag eleCandidates_
const TriggerObjectCollection & getObjects() const
MonitorElement * bookProfile2D(Args &&...args)
double dxyFinder(double, double, edm::Handle< reco::RecoChargedCandidateCollection >, edm::Handle< reco::BeamSpot >, double)
std::pair< MonitorElement *, bool > mrME
MonitorElement * book1D(Args &&...args)
Abs< T >::type abs(const T &t)
static std::string const triggerResults
virtual double vz() const
z coordinate of vertex position
std::vector< double > massBINNING
std::pair< MonitorElement *, bool > rsqME
std::pair< MonitorElement *, bool > ptME
std::vector< double > dzBINNING
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
double deltaR(double eta1, double eta2, double phi1, double phi2)
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
std::pair< MonitorElement *, bool > nME
std::pair< MonitorElement *, bool > dRME
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
std::vector< size_type > Keys
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
HLTConfigProvider hltConfig_
std::pair< MonitorElement *, bool > ptMEhep17
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > muCandidatesToken_
bool isHEM17(double eta, double phi)
std::vector< double > phi_variable_binning_
MonitorElement * eventsPlot_
std::vector< edm::ParameterSet > plotPSETS_
void analyze(const edm::Event &, const edm::EventSetup &) override
double y0() const
y coordinate
double dzFinder(double, double, double, double, edm::Handle< reco::RecoChargedCandidateCollection >, double)
static std::string const triggerPaths
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
const_iterator begin() const
std::vector< double > dxyBINNING
edm::EDGetTokenT< trigger::TriggerEvent > triggerEventToken_
std::vector< double > ptBINNING
double x0() const
x coordinate