59 std::vector<float>& offlineIP3D,
60 std::vector<float>& offlineIP3DSig);
68 std::vector<float>& onlineIP3D,
69 std::vector<float>& onlineIP3DSig);
241 using namespace reco;
246 : dirname_(iConfig.getUntrackedParameter(
"dirname",
std::
string(
"HLT/BTV/"))),
247 processname_(iConfig.getParameter<
std::
string>(
"processname")),
248 verbose_(iConfig.getUntrackedParameter<
bool>(
"verbose",
false)),
249 triggerSummaryLabel_(iConfig.getParameter<
edm::
InputTag>(
"triggerSummaryLabel")),
250 triggerResultsLabel_(iConfig.getParameter<
edm::
InputTag>(
"triggerResultsLabel")),
251 turnon_threshold_loose_(iConfig.getParameter<double>(
"turnon_threshold_loose")),
252 turnon_threshold_medium_(iConfig.getParameter<double>(
"turnon_threshold_medium")),
253 turnon_threshold_tight_(iConfig.getParameter<double>(
"turnon_threshold_tight")),
254 turnon_threshold_offline_loose_(iConfig.getParameter<double>(
"turnon_threshold_offline_loose")),
255 turnon_threshold_offline_medium_(iConfig.getParameter<double>(
"turnon_threshold_offline_medium")),
256 turnon_threshold_offline_tight_(iConfig.getParameter<double>(
"turnon_threshold_offline_tight")),
268 shallowTagInfosTokenPf_(
272 minDecayLength_(iConfig.getParameter<double>(
"minDecayLength")),
273 maxDecayLength_(iConfig.getParameter<double>(
"maxDecayLength")),
274 minJetDistance_(iConfig.getParameter<double>(
"minJetDistance")),
275 maxJetDistance_(iConfig.getParameter<double>(
"maxJetDistance")),
276 dRTrackMatch_(iConfig.getParameter<double>(
"dRTrackMatch")) {
277 std::vector<edm::ParameterSet>
paths = iConfig.
getParameter<std::vector<edm::ParameterSet>>(
"pathPairs");
289 LogDebug(
"BTVHLTOfflineSource") <<
"HLTConfigProvider failed to initialize.";
296 if (
pathname.find(custompathnamepair.first) != std::string::npos) {
309 edm::LogInfo(
"BTVHLTOfflineSource") <<
"TriggerResults not found, skipping event";
321 edm::LogInfo(
"BTVHLTOfflineSource") <<
"TriggerEvent not found, skipping event";
341 cout <<
"Run = " <<
iEvent.id().run() <<
", LS = " <<
iEvent.luminosityBlock()
342 <<
", Event = " <<
iEvent.id().event() << endl;
352 edm::LogInfo(
"BTVHLTOfflineSource") <<
"Path " <<
v.getPath() <<
" not in menu, skipping event";
357 edm::LogInfo(
"BTVHLTOfflineSource") <<
"Path " <<
v.getPath() <<
" not accepted, skipping event";
364 if (
v.getTriggerType() ==
"PF" &&
pfTags.isValid()) {
365 const auto& iter =
pfTags->begin();
367 float Discr_online = iter->second;
368 if (Discr_online < 0)
369 Discr_online = -0.05;
371 v.Discr->Fill(Discr_online);
372 v.Pt->Fill(iter->first->pt());
373 v.Eta->Fill(iter->first->eta());
375 if (offlineJetTagHandlerb.
isValid()) {
376 for (
auto const& iterOffb : *offlineJetTagHandlerb) {
377 float DR =
reco::deltaR(iterOffb.first->eta(), iterOffb.first->phi(), iter->first->eta(), iter->first->phi());
379 float Discr_offline = iterOffb.second;
380 float Pt_offline = iterOffb.first->pt();
381 float Eta_offline = iterOffb.first->eta();
382 float Phi_offline = iterOffb.first->phi();
384 if (Discr_offline < 0)
385 Discr_offline = -0.05;
386 v.Discr_HLTvsRECO->Fill(Discr_online, Discr_offline);
387 v.Discr_HLTMinusRECO->Fill(Discr_online - Discr_offline);
389 v.Discr_turnon_loose.denominator->Fill(Discr_offline);
390 v.Discr_turnon_medium.denominator->Fill(Discr_offline);
391 v.Discr_turnon_tight.denominator->Fill(Discr_offline);
394 v.Discr_turnon_loose.numerator->Fill(Discr_offline);
396 v.Discr_turnon_medium.numerator->Fill(Discr_offline);
398 v.Discr_turnon_tight.numerator->Fill(Discr_offline);
401 v.Pt_turnon_loose.denominator->Fill(Pt_offline);
402 v.Eta_turnon_loose.denominator->Fill(Eta_offline);
403 v.Phi_turnon_loose.denominator->Fill(Phi_offline);
405 v.Pt_turnon_loose.numerator->Fill(Pt_offline);
406 v.Eta_turnon_loose.numerator->Fill(Eta_offline);
407 v.Phi_turnon_loose.numerator->Fill(Phi_offline);
411 v.Pt_turnon_medium.denominator->Fill(Pt_offline);
412 v.Eta_turnon_medium.denominator->Fill(Eta_offline);
413 v.Phi_turnon_medium.denominator->Fill(Phi_offline);
415 v.Pt_turnon_medium.numerator->Fill(Pt_offline);
416 v.Eta_turnon_medium.numerator->Fill(Eta_offline);
417 v.Phi_turnon_medium.numerator->Fill(Phi_offline);
421 v.Pt_turnon_tight.denominator->Fill(Pt_offline);
422 v.Eta_turnon_tight.denominator->Fill(Eta_offline);
423 v.Phi_turnon_tight.denominator->Fill(Phi_offline);
425 v.Pt_turnon_tight.numerator->Fill(Pt_offline);
426 v.Eta_turnon_tight.numerator->Fill(Eta_offline);
427 v.Phi_turnon_tight.numerator->Fill(Phi_offline);
436 bool pfSVTagCollValid = (
v.getTriggerType() ==
"PF" && jetSVTagsCollPF.
isValid());
437 if (offlineIPTagHandle.
isValid() && pfSVTagCollValid) {
438 std::vector<float> offlineIP3D;
439 std::vector<float> offlineIP3DSig;
441 iter->first->eta(), iter->first->phi(), offlineIPTagHandle, offlineIP3D, offlineIP3DSig);
442 std::vector<const reco::Track*> onlineTracks;
443 std::vector<float> onlineIP3D;
444 std::vector<float> onlineIP3DSig;
445 if (pfSVTagCollValid)
446 onlineTracks = getOnlineBTagTracks<SVTagInfo>(
447 iter->first->eta(), iter->first->phi(), jetSVTagsCollPF, onlineIP3D, onlineIP3DSig);
449 for (
unsigned int iOffTrk = 0; iOffTrk < offlineTracks.size(); ++iOffTrk) {
450 const reco::Track* offTrk = offlineTracks.at(iOffTrk);
451 bool hasMatch =
false;
452 float offTrkEta = offTrk->
eta();
453 float offTrkPhi = offTrk->
phi();
456 float DR =
reco::deltaR(offTrkEta, offTrkPhi, onTrk->eta(), onTrk->phi());
462 float offTrkPt = offTrk->
pt();
463 v.OnlineTrkEff_Pt.denominator->Fill(offTrkPt);
465 v.OnlineTrkEff_Pt.numerator->Fill(offTrkPt);
467 v.OnlineTrkEff_Eta.denominator->Fill(offTrkEta);
469 v.OnlineTrkEff_Eta.numerator->Fill(offTrkEta);
471 v.OnlineTrkEff_3d_ip_distance.denominator->Fill(offlineIP3D.at(iOffTrk));
473 v.OnlineTrkEff_3d_ip_distance.numerator->Fill(offlineIP3D.at(iOffTrk));
475 v.OnlineTrkEff_3d_ip_sig.denominator->Fill(offlineIP3DSig.at(iOffTrk));
477 v.OnlineTrkEff_3d_ip_sig.numerator->Fill(offlineIP3DSig.at(iOffTrk));
480 for (
unsigned int iOnTrk = 0; iOnTrk < onlineTracks.size(); ++iOnTrk) {
481 const reco::Track* onTrk = onlineTracks.at(iOnTrk);
482 bool hasMatch =
false;
483 float onTrkEta = onTrk->
eta();
484 float onTrkPhi = onTrk->
phi();
487 float DR =
reco::deltaR(onTrkEta, onTrkPhi, offTrk->eta(), offTrk->phi());
493 float onTrkPt = onTrk->
pt();
494 v.OnlineTrkFake_Pt.denominator->Fill(onTrkPt);
496 v.OnlineTrkFake_Pt.numerator->Fill(onTrkPt);
498 v.OnlineTrkFake_Eta.denominator->Fill(onTrkEta);
500 v.OnlineTrkFake_Eta.numerator->Fill(onTrkEta);
502 v.OnlineTrkFake_3d_ip_distance.denominator->Fill(onlineIP3D.at(iOnTrk));
504 v.OnlineTrkFake_3d_ip_distance.numerator->Fill(onlineIP3D.at(iOnTrk));
506 v.OnlineTrkFake_3d_ip_sig.denominator->Fill(onlineIP3DSig.at(iOnTrk));
508 v.OnlineTrkFake_3d_ip_sig.numerator->Fill(onlineIP3DSig.at(iOnTrk));
514 v.PVz->Fill(VertexHandler->begin()->z());
515 if (offlineVertexHandler.
isValid()) {
516 v.PVz_HLTMinusRECO->Fill(VertexHandler->begin()->z() - offlineVertexHandler->begin()->z());
534 if (
v.getTriggerType() ==
"PF" && shallowTagInfosPf.
isValid()) {
535 const auto& shallowTagInfoCollection = shallowTagInfosPf;
536 for (
const auto& shallowTagInfo : *shallowTagInfoCollection) {
537 const auto& tagVars = shallowTagInfo.taggingVariables();
541 v.h_jetNSecondaryVertices->Fill(tagVar);
542 v.n_vtx->Fill(tagVar);
546 v.n_sel_tracks->Fill(tagVar);
547 v.h_jetNSelectedTracks->Fill(tagVar);
551 v.h_jet_pt->Fill(tagVar);
555 v.h_jet_eta->Fill(tagVar);
559 v.h_trackSumJetEtRatio->Fill(tagVar);
563 v.h_trackSumJetDeltaR->Fill(tagVar);
567 v.h_vertexCategory->Fill(tagVar);
571 v.h_trackSip2dValAboveCharm->Fill(tagVar);
575 v.h_trackSip2dSigAboveCharm->Fill(tagVar);
579 v.h_trackSip3dValAboveCharm->Fill(tagVar);
583 v.h_trackSip3dSigAboveCharm->Fill(tagVar);
587 v.h_jetNTracksEtaRel->Fill(tagVar);
602 for (
unsigned i_trk = 0; i_trk <
trackEtaRel.size(); i_trk++) {
610 for (
unsigned i_trk = 0; i_trk <
trackPtRel.size(); i_trk++) {
614 for (
unsigned i_trk = 0; i_trk <
trackDeltaR.size(); i_trk++) {
618 for (
unsigned i_trk = 0; i_trk <
trackPtRatio.size(); i_trk++) {
626 for (
unsigned i_trk = 0; i_trk <
trackSip3dVal.size(); i_trk++) {
629 v.h_3d_ip_distance->Fill(
val);
630 v.h_3d_ip_error->Fill(
val / sig);
631 v.h_3d_ip_sig->Fill(sig);
638 v.vtx_mass->Fill(tagVar);
641 v.n_vtx_trks->Fill(tagVar);
645 v.h_vertexEnergyRatio->Fill(tagVar);
649 v.h_vertexJetDeltaR->Fill(tagVar);
653 v.h_flightDistance2dVal->Fill(tagVar);
657 v.h_flightDistance2dSig->Fill(tagVar);
661 v.h_flightDistance3dVal->Fill(tagVar);
665 v.h_flightDistance3dSig->Fill(tagVar);
717 std::vector<float>& offlineIP3D,
718 std::vector<float>& offlineIP3DSig) {
719 std::vector<const reco::Track*> offlineTracks;
721 for (
auto const& iterOffIP : *offlineIPTagHandle) {
722 float DR =
reco::deltaR(iterOffIP.jet()->eta(), iterOffIP.jet()->phi(), hltJetEta, hltJetPhi);
732 <<
"BTagPerformanceAnalyzer: Extended TagInfo not of type TrackIPTagInfo. " << std::endl;
736 tagInfo->primaryVertex()->position().y(),
737 tagInfo->primaryVertex()->position().z());
739 const std::vector<reco::btag::TrackIPData>& ip =
tagInfo->impactParameterData();
742 std::vector<reco::CandidatePtr> sortedTracks =
tagInfo->sortedTracks(sortedIndices);
743 std::vector<std::size_t> selectedIndices;
745 for (
unsigned int n = 0;
n != sortedIndices.size(); ++
n) {
747 double jetDistance = ip[sortedIndices[
n]].distanceToJetAxis.value();
750 selectedIndices.push_back(sortedIndices[
n]);
755 for (
unsigned int n = 0;
n != selectedIndices.size(); ++
n) {
757 offlineTracks.push_back(
track);
758 offlineIP3D.push_back(ip[
n].
ip3d.value());
759 offlineIP3DSig.push_back(ip[
n].
ip3d.significance());
762 return offlineTracks;
765 template <
class Base>
769 std::vector<float>& onlineIP3D,
770 std::vector<float>& onlineIP3DSig) {
771 std::vector<const reco::Track*> onlineTracks;
773 for (
auto iterTI = jetSVTagsColl->begin(); iterTI != jetSVTagsColl->end(); ++iterTI) {
774 float DR =
reco::deltaR(iterTI->jet()->eta(), iterTI->jet()->phi(), hltJetEta, hltJetPhi);
778 const auto& ipInfo = *(iterTI->trackIPTagInfoRef().get());
779 const std::vector<reco::btag::TrackIPData>& ip = ipInfo.impactParameterData();
781 unsigned int trackSize = ipInfo.selectedTracks().size();
782 for (
unsigned int itt = 0; itt < trackSize; ++itt) {
783 const auto ptrackRef = (ipInfo.selectedTracks()[itt]);
785 if (ptrackRef.isAvailable()) {
787 onlineTracks.push_back(ptrackPtr);
788 onlineIP3D.push_back(ip[itt].
ip3d.value());
789 onlineIP3DSig.push_back(ip[itt].
ip3d.significance());
808 histoname = labelname +
"_Discr";
809 title = labelname +
"_Discr " + trigPath;
810 v.Discr = iBooker.
book1D(histoname.c_str(),
title.c_str(), 110, -0.1, 1);
812 histoname = labelname +
"_Pt";
813 title = labelname +
"_Pt " + trigPath;
814 v.Pt = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, 0, 400);
816 histoname = labelname +
"_Eta";
817 title = labelname +
"_Eta " + trigPath;
818 v.Eta = iBooker.
book1D(histoname.c_str(),
title.c_str(), 60, -3.0, 3.0);
820 histoname =
"HLTvsRECO_Discr";
821 title =
"online discr vs offline discr " + trigPath;
822 v.Discr_HLTvsRECO = iBooker.
book2D(histoname.c_str(),
title.c_str(), 110, -0.1, 1, 110, -0.1, 1);
824 histoname =
"HLTMinusRECO_Discr";
825 title =
"online discr minus offline discr " + trigPath;
826 v.Discr_HLTMinusRECO = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -1, 1);
828 histoname =
"Turnon_loose_Discr";
829 title =
"turn-on with loose threshold " + trigPath;
830 v.bookME(iBooker,
v.Discr_turnon_loose, histoname,
title, 22, -0.1, 1.);
832 histoname =
"Turnon_medium_Discr";
833 title =
"turn-on with medium threshold " + trigPath;
834 v.bookME(iBooker,
v.Discr_turnon_medium, histoname,
title, 22, -0.1, 1.);
836 histoname =
"Turnon_tight_Discr";
837 title =
"turn-on with tight threshold " + trigPath;
838 v.bookME(iBooker,
v.Discr_turnon_tight, histoname,
title, 22, -0.1, 1.);
840 histoname =
"Turnon_loose_Pt";
841 title =
"turn-on with loose threshold " + trigPath;
842 v.bookME(iBooker,
v.Pt_turnon_loose, histoname,
title, 50, 0., 500.);
844 histoname =
"Turnon_medium_Pt";
845 title =
"turn-on with medium threshold " + trigPath;
846 v.bookME(iBooker,
v.Pt_turnon_medium, histoname,
title, 50, 0., 500.);
848 histoname =
"Turnon_tight_Pt";
849 title =
"turn-on with tight threshold " + trigPath;
850 v.bookME(iBooker,
v.Pt_turnon_tight, histoname,
title, 50, 0., 500.);
852 histoname =
"Turnon_loose_Eta";
853 title =
"turn-on with loose threshold " + trigPath;
854 v.bookME(iBooker,
v.Eta_turnon_loose, histoname,
title, 60, -3., 3.);
856 histoname =
"Turnon_medium_Eta";
857 title =
"turn-on with medium threshold " + trigPath;
858 v.bookME(iBooker,
v.Eta_turnon_medium, histoname,
title, 60, -3., 3.);
860 histoname =
"Turnon_tight_Eta";
861 title =
"turn-on with tight threshold " + trigPath;
862 v.bookME(iBooker,
v.Eta_turnon_tight, histoname,
title, 60, -3., 3.);
864 histoname =
"Turnon_loose_Phi";
865 title =
"turn-on with loose threshold " + trigPath;
866 v.bookME(iBooker,
v.Phi_turnon_loose, histoname,
title, 60, -3., 3.);
868 histoname =
"Turnon_medium_Phi";
869 title =
"turn-on with medium threshold " + trigPath;
870 v.bookME(iBooker,
v.Phi_turnon_medium, histoname,
title, 60, -3., 3.);
872 histoname =
"Turnon_tight_Phi";
873 title =
"turn-on with tight threshold " + trigPath;
874 v.bookME(iBooker,
v.Phi_turnon_tight, histoname,
title, 60, -3., 3.);
876 histoname = labelname +
"_PVz";
877 title =
"online z(PV) " + trigPath;
878 v.PVz = iBooker.
book1D(histoname.c_str(),
title.c_str(), 80, -20, 20);
880 histoname = labelname +
"_fastPVz";
881 title =
"online z(fastPV) " + trigPath;
882 v.fastPVz = iBooker.
book1D(histoname.c_str(),
title.c_str(), 80, -20, 20);
884 histoname =
"HLTMinusRECO_PVz";
885 title =
"online z(PV) - offline z(PV) " + trigPath;
886 v.PVz_HLTMinusRECO = iBooker.
book1D(histoname.c_str(),
title.c_str(), 200, -0.5, 0.5);
888 histoname =
"HLTMinusRECO_fastPVz";
889 title =
"online z(fastPV) - offline z(PV) " + trigPath;
890 v.fastPVz_HLTMinusRECO = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -2, 2);
893 title =
"N vertex candidates " + trigPath;
894 v.n_vtx = iBooker.
book1D(histoname.c_str(),
title.c_str(), 10, -0.5, 9.5);
896 histoname =
"vtx_mass";
897 title =
"secondary vertex mass (GeV)" + trigPath;
898 v.vtx_mass = iBooker.
book1D(histoname.c_str(),
title.c_str(), 20, 0, 10);
900 histoname =
"n_vtx_trks";
901 title =
"N tracks associated to secondary vertex" + trigPath;
902 v.n_vtx_trks = iBooker.
book1D(histoname.c_str(),
title.c_str(), 20, -0.5, 19.5);
904 histoname =
"n_sel_tracks";
905 title =
"N selected tracks" + trigPath;
906 v.n_sel_tracks = iBooker.
book1D(histoname.c_str(),
title.c_str(), 25, -0.5, 24.5);
908 histoname =
"3d_ip_distance";
909 title =
"3D IP distance of tracks (cm)" + trigPath;
910 v.h_3d_ip_distance = iBooker.
book1D(histoname.c_str(),
title.c_str(), 40, -0.1, 0.1);
912 histoname =
"3d_ip_error";
913 title =
"3D IP error of tracks (cm)" + trigPath;
914 v.h_3d_ip_error = iBooker.
book1D(histoname.c_str(),
title.c_str(), 40, 0., 0.1);
916 histoname =
"3d_ip_sig";
917 title =
"3D IP significance of tracks (cm)" + trigPath;
918 v.h_3d_ip_sig = iBooker.
book1D(histoname.c_str(),
title.c_str(), 40, -40, 40);
921 histoname =
"jetNSecondaryVertices";
922 title =
"jet N Secondary Vertices" + trigPath;
923 v.h_jetNSecondaryVertices = iBooker.
book1D(histoname.c_str(),
title.c_str(), 10, -0.5, 9.5);
925 histoname =
"jet_pt";
926 title =
"jet pt" + trigPath;
927 v.h_jet_pt = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 100);
929 histoname =
"jet_eta";
930 title =
"jet eta" + trigPath;
931 v.h_jet_eta = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -2.5, 2.5);
933 histoname =
"trackSumJetEtRatio";
934 title =
"trackSumJetEtRatio" + trigPath;
935 v.h_trackSumJetEtRatio = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 1.5);
937 histoname =
"trackSip2dValAboveCharm";
938 title =
"trackSip2dSigAboveCharm" + trigPath;
939 v.h_trackSip2dSigAboveCharm = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.2, 0.2);
941 histoname =
"trackSip2dSigAboveCharm";
942 title =
"trackSip2dSigAboveCharm" + trigPath;
943 v.h_trackSip2dValAboveCharm = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -50, 50);
945 histoname =
"trackSip3dValAboveCharm";
946 title =
"trackSip3dValAboveCharm" + trigPath;
947 v.h_trackSip3dValAboveCharm = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.2, 0.2);
949 histoname =
"trackSip3dSigAboveCharm";
950 title =
"trackSip3dSigAboveCharm" + trigPath;
951 v.h_trackSip3dSigAboveCharm = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -50, 50);
953 histoname =
"jetNSelectedTracks";
954 title =
"jet N Selected Tracks" + trigPath;
955 v.h_jetNSelectedTracks = iBooker.
book1D(histoname.c_str(),
title.c_str(), 42, -1.5, 40.5);
957 histoname =
"jetNTracksEtaRel";
958 title =
"jetNTracksEtaRel" + trigPath;
959 v.h_jetNTracksEtaRel = iBooker.
book1D(histoname.c_str(),
title.c_str(), 42, -1.5, 40.5);
961 histoname =
"vertexCategory";
962 title =
"vertex category" + trigPath;
963 v.h_vertexCategory = iBooker.
book1D(histoname.c_str(),
title.c_str(), 4, -1.5, 2.5);
965 histoname =
"trackSumJetDeltaR";
966 title =
"trackSumJetDeltaR" + trigPath;
967 v.h_trackSumJetDeltaR = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 0.35);
970 histoname =
"trackJetDistVal";
971 title =
"trackJetDistVal" + trigPath;
972 v.h_trackJetDistVal = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -1, 0.01);
974 histoname =
"trackPtRel";
975 title =
"track pt rel" + trigPath;
976 v.h_trackPtRel = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 7);
978 histoname =
"trackDeltaR";
979 title =
"trackDeltaR" + trigPath;
980 v.h_trackDeltaR = iBooker.
book1D(histoname.c_str(),
title.c_str(), 160, -0.05, .47);
982 histoname =
"trackPtRatio";
983 title =
"trackPtRatio" + trigPath;
984 v.h_trackPtRatio = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.01, 0.3);
986 histoname =
"trackSip2dSig";
987 title =
"trackSip2dSig" + trigPath;
988 v.h_trackSip2dSig = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -55, 55);
990 histoname =
"trackDecayLenVal";
991 title =
"trackDecayLenVal" + trigPath;
992 v.h_trackDecayLenVal = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 22);
994 histoname =
"trackEtaRel";
995 title =
"trackEtaRel" + trigPath;
996 v.h_trackEtaRel = iBooker.
book1D(histoname.c_str(),
title.c_str(), 31, 0, 30);
999 histoname =
"vertexEnergyRatio";
1000 title =
"vertexEnergyRatio" + trigPath;
1001 v.h_vertexEnergyRatio = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 3);
1003 histoname =
"vertexJetDeltaR";
1004 title =
"vertexJetDeltaR" + trigPath;
1005 v.h_vertexJetDeltaR = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.01, 0.4);
1007 histoname =
"flightDistance2dVal";
1008 title =
"flightDistance2dVal" + trigPath;
1009 v.h_flightDistance2dVal = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 5);
1011 histoname =
"flightDistance2dSig";
1012 title =
"flightDistance2dSig" + trigPath;
1013 v.h_flightDistance2dSig = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -10, 150);
1015 histoname =
"flightDistance3dVal";
1016 title =
"flightDistance3dVal" + trigPath;
1017 v.h_flightDistance3dVal = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -0.1, 5);
1019 histoname =
"flightDistance3dSig";
1020 title =
"flightDistance3dSig" + trigPath;
1021 v.h_flightDistance3dSig = iBooker.
book1D(histoname.c_str(),
title.c_str(), 100, -10, 150);
1025 histoname =
"OnlineTrkEff_Pt";
1026 title =
"Relative Online Trk Efficiency vs Pt " + trigPath;
1027 v.bookME(iBooker,
v.OnlineTrkEff_Pt, histoname,
title, 50, -0.5, 20.);
1029 histoname =
"OnlineTrkEff_Eta";
1030 title =
"Relative Online Trk Efficiency vs Eta " + trigPath;
1031 v.bookME(iBooker,
v.OnlineTrkEff_Eta, histoname,
title, 60, -3.0, 3.0);
1033 histoname =
"OnlineTrkEff_3d_ip_distance";
1034 title =
"Relative Online Trk Efficiency vs IP3D " + trigPath;
1035 v.bookME(iBooker,
v.OnlineTrkEff_3d_ip_distance, histoname,
title, 40, -0.1, 0.1);
1037 histoname =
"OnlineTrkEff_3d_ip_sig";
1038 title =
"Relative Online Trk Efficiency vs IP3D significance " + trigPath;
1039 v.bookME(iBooker,
v.OnlineTrkEff_3d_ip_sig, histoname,
title, 40, -40, 40);
1041 histoname =
"OnlineTrkFake_Pt";
1042 title =
"Relative Online Trk Fake Rate vs Pt " + trigPath;
1043 v.bookME(iBooker,
v.OnlineTrkFake_Pt, histoname,
title, 50, -0.5, 20.);
1045 histoname =
"OnlineTrkFake_Eta";
1046 title =
"Relative Online Trk Fake Rate vs Eta " + trigPath;
1047 v.bookME(iBooker,
v.OnlineTrkFake_Eta, histoname,
title, 60, -3.0, 3.0);
1049 histoname =
"OnlineTrkFake_3d_ip_distance";
1050 title =
"Relative Online Trk Fake Rate vs IP3D " + trigPath;
1051 v.bookME(iBooker,
v.OnlineTrkFake_3d_ip_distance, histoname,
title, 40, -0.1, 0.1);
1053 histoname =
"OnlineTrkFake_3d_ip_sig";
1054 title =
"Relative Online Trk Fake Rate vs IP3D significance " + trigPath;
1055 v.bookME(iBooker,
v.OnlineTrkFake_3d_ip_sig, histoname,
title, 40, -40, 40);
void analyze(const edm::Event &, const edm::EventSetup &) override
ObjME OnlineTrkFake_3d_ip_distance
BTVHLTOfflineSource(const edm::ParameterSet &)
const std::string & triggerName(unsigned int triggerIndex) const
MonitorElement * h_trackDeltaR
T getParameter(std::string const &) const
edm::EDGetTokenT< std::vector< SVTagInfo > > SVTagInfosTokenPf_
The single EDProduct to be saved for each event (AOD case)
ObjME OnlineTrkEff_3d_ip_distance
const bool operator==(const std::string &v) const
ObjME OnlineTrkEff_3d_ip_sig
virtual void setCurrentFolder(std::string const &fullpath)
static PFTauRenderPlugin instance
MonitorElement * fastPVz_HLTMinusRECO
MonitorElement * h_jetNTracksEtaRel
MonitorElement * h_3d_ip_sig
edm::EDGetTokenT< reco::JetTagCollection > pfTagsToken_
edm::EDGetTokenT< reco::JetTagCollection > offlineDiscrTokenb_
void setLabel(std::string labelName)
ObjME Discr_turnon_medium
MonitorElement * h_vertexEnergyRatio
reco::TemplatedSecondaryVertexTagInfo< reco::CandIPTagInfo, reco::VertexCompositePtrCandidate > SVTagInfo
MonitorElement * h_3d_ip_error
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
const reco::Track * toTrack(const reco::TrackBaseRef &t)
MonitorElement * h_flightDistance3dSig
MonitorElement * h_vertexCategory
static const std::string removeVersion(const std::string &trigger)
edm::EDGetTokenT< std::vector< reco::Vertex > > offlinePVToken_
edm::EDGetTokenT< trigger::TriggerEvent > triggerSummaryFUToken
double pt() const
track transverse momentum
MonitorElement * h_trackJetDistVal
MonitorElement * h_trackSumJetEtRatio
std::vector< PathInfo >::iterator find(const std::string &pathName)
MonitorElement * h_trackEtaRel
edm::InputTag triggerResultsLabel_
MonitorElement * vtx_mass
float turnon_threshold_offline_loose_
ObjME OnlineTrkFake_3d_ip_sig
MonitorElement * h_flightDistance3dVal
edm::Handle< reco::JetTagCollection > pfTags
unsigned int size() const
number of trigger paths in trigger table
MonitorElement * h_trackPtRatio
edm::InputTag triggerSummaryLabel_
const int getprescaleUsed() const
const std::string getTriggerType() const
~PathInfo() override=default
PathInfo(const int prescaleUsed, const std::string &pathName, const std::string &filterName, const std::string &processName, const int type, const std::string &triggerType)
MonitorElement * h_trackSip2dSigAboveCharm
double phi() const
azimuthal angle of momentum vector
PathInfoCollection hltPathsAll_
#define DEFINE_FWK_MODULE(type)
MonitorElement * PVz_HLTMinusRECO
MonitorElement * h_trackPtRel
MonitorElement * n_vtx_trks
~BTVHLTOfflineSource() override
static std::string const triggerResults
const std::string getProcess() const
float turnon_threshold_offline_medium_
HLTConfigProvider hltConfig_
MonitorElement * h_trackSip2dSig
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
MonitorElement * h_jetNSelectedTracks
Log< level::Info, false > LogInfo
double eta() const
pseudorapidity of momentum vector
MonitorElement * h_vertexJetDeltaR
labelName
Custom Jet reco ####.
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken
MonitorElement * Discr_HLTMinusRECO
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
edm::EDGetTokenT< std::vector< reco::Vertex > > hltPFPVToken_
float turnon_threshold_loose_
MonitorElement * h_trackDecayLenVal
void dqmBeginRun(edm::Run const &run, edm::EventSetup const &c) override
MonitorElement * h_flightDistance2dSig
MonitorElement * h_3d_ip_distance
std::vector< const reco::Track * > getOfflineBTagTracks(float hltJetEta, float hltJetPhi, edm::Handle< edm::View< reco::BaseTagInfo >> offlineIPTagHandle, std::vector< float > &offlineIP3D, std::vector< float > &offlineIP3DSig)
std::vector< std::pair< std::string, std::string > > custompathnamepairs_
edm::EDGetTokenT< trigger::TriggerEvent > triggerSummaryToken
const std::string getPath() const
edm::EDGetTokenT< edm::View< reco::BaseTagInfo > > offlineIPToken_
const int getObjectType() const
edm::EDGetTokenT< std::vector< reco::ShallowTagInfo > > shallowTagInfosTokenPf_
float turnon_threshold_offline_tight_
MonitorElement * h_flightDistance2dVal
MonitorElement * h_trackSip3dValAboveCharm
MonitorElement * Discr_HLTvsRECO
const edm::InputTag getTag() const
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
void bookHistograms(DQMStore::IBooker &, edm::Run const &run, edm::EventSetup const &c) override
MonitorElement * h_trackSip3dSig
const std::string getLabel() const
MonitorElement * h_jet_pt
MonitorElement * h_trackSip3dSigAboveCharm
float turnon_threshold_tight_
edm::EDGetTokenT< edm::TriggerResults > triggerResultsFUToken
std::vector< const reco::Track * > getOnlineBTagTracks(float hltJetEta, float hltJetPhi, edm::Handle< std::vector< Base >> jetSVTagsColl, std::vector< float > &onlineIP3D, std::vector< float > &onlineIP3DSig)
MonitorElement * h_jet_eta
MonitorElement * n_sel_tracks
MonitorElement * h_trackSip2dValAboveCharm
MonitorElement * h_jetNSecondaryVertices
MonitorElement * h_trackSumJetDeltaR
float turnon_threshold_medium_