Skip to content
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 NoBPTX EXO triggers #18950

Merged
merged 10 commits into from Jun 24, 2017
401 changes: 401 additions & 0 deletions DQMOffline/Trigger/plugins/NoBPTXMonitor.cc

Large diffs are not rendered by default.

126 changes: 126 additions & 0 deletions DQMOffline/Trigger/plugins/NoBPTXMonitor.h
@@ -0,0 +1,126 @@
#ifndef DQMOFFLINE_TRIGGER_NOBPTXMONITOR_H
#define DQMOFFLINE_TRIGGER_NOBPTXMONITOR_H


#include <string>
#include <vector>
#include <map>

#include "FWCore/Utilities/interface/EDGetToken.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/Registry.h"

#include "DQMServices/Core/interface/MonitorElement.h"
#include <DQMServices/Core/interface/DQMEDAnalyzer.h>
#include "DQM/TrackingMonitor/interface/GetLumi.h"

#include "CommonTools/TriggerUtils/interface/GenericTriggerEventFlag.h"
#include "CommonTools/Utils/interface/StringCutObjectSelector.h"

//DataFormats
#include "DataFormats/JetReco/interface/CaloJet.h"
#include "DataFormats/JetReco/interface/CaloJetCollection.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"

class GenericTriggerEventFlag;


//
// class declaration
//

class NoBPTXMonitor : public DQMEDAnalyzer
{
public:
NoBPTXMonitor( const edm::ParameterSet& );
~NoBPTXMonitor();
static void fillDescriptions(edm::ConfigurationDescriptions & descriptions);
static void fillHistoPSetDescription(edm::ParameterSetDescription & pset);
static void fillHistoLSPSetDescription(edm::ParameterSetDescription & pset);

struct NoBPTXME {
MonitorElement* numerator;
MonitorElement* denominator;
};

protected:

void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
void bookNoBPTX(DQMStore::IBooker &, NoBPTXME& me, const std::string& histname, const std::string& histtitle, int nbins, double xmin, double xmax);
void bookNoBPTX(DQMStore::IBooker &, NoBPTXME& me, const std::string& histname, const std::string& histtitle, const std::vector<double>& binningX);
void bookNoBPTX(DQMStore::IBooker &, NoBPTXME& me, const std::string& histname, const std::string& histtitle, int nbinsX, double xmin, double xmax, double ymin, double ymax);
void bookNoBPTX(DQMStore::IBooker &, NoBPTXME& me, const std::string& histname, const std::string& histtitle, int nbinsX, double xmin, double xmax, int nbinsY, double ymin, double ymax);
void bookNoBPTX(DQMStore::IBooker &, NoBPTXME& me, const std::string& histname, const std::string& histtitle, const std::vector<double>& binningX, const std::vector<double>& binningY);
void setNoBPTXTitle(NoBPTXME& me, std::string titleX, std::string titleY);

void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;

private:
struct NoBPTXbinning {
unsigned int nbins;
double xmin;
double xmax;
};

static NoBPTXbinning getHistoPSet (const edm::ParameterSet & pset);
static NoBPTXbinning getHistoLSPSet (const edm::ParameterSet & pset);

std::string folderName_;
std::string histoSuffix_;

edm::EDGetTokenT<reco::CaloJetCollection> jetToken_;
edm::EDGetTokenT<reco::TrackCollection> muonToken_;

std::vector<double> jetE_variable_binning_;
NoBPTXbinning jetE_binning_;
NoBPTXbinning jetEta_binning_;
NoBPTXbinning jetPhi_binning_;
std::vector<double> muonPt_variable_binning_;
NoBPTXbinning muonPt_binning_;
NoBPTXbinning muonEta_binning_;
NoBPTXbinning muonPhi_binning_;
NoBPTXbinning ls_binning_;
NoBPTXbinning bx_binning_;

NoBPTXME jetENoBPTX_;
NoBPTXME jetENoBPTX_variableBinning_;
NoBPTXME jetEVsLS_;
NoBPTXME jetEVsBX_;
NoBPTXME jetEtaNoBPTX_;
NoBPTXME jetEtaVsLS_;
NoBPTXME jetEtaVsBX_;
NoBPTXME jetPhiNoBPTX_;
NoBPTXME jetPhiVsLS_;
NoBPTXME jetPhiVsBX_;
NoBPTXME muonPtNoBPTX_;
NoBPTXME muonPtNoBPTX_variableBinning_;
NoBPTXME muonPtVsLS_;
NoBPTXME muonPtVsBX_;
NoBPTXME muonEtaNoBPTX_;
NoBPTXME muonEtaVsLS_;
NoBPTXME muonEtaVsBX_;
NoBPTXME muonPhiNoBPTX_;
NoBPTXME muonPhiVsLS_;
NoBPTXME muonPhiVsBX_;

std::unique_ptr<GenericTriggerEventFlag> num_genTriggerEventFlag_;
std::unique_ptr<GenericTriggerEventFlag> den_genTriggerEventFlag_;

StringCutObjectSelector<reco::CaloJet,true > jetSelection_;
StringCutObjectSelector<reco::Track,true> muonSelection_;
unsigned int njets_;
unsigned int nmuons_;

};

#endif //DQMOFFLINE_TRIGGER_NOBPTXMONITOR_H
34 changes: 33 additions & 1 deletion DQMOffline/Trigger/python/ExoticaMonitoring_Client_cff.py
@@ -1,6 +1,7 @@
import FWCore.ParameterSet.Config as cms
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester

metEfficiency = cms.EDAnalyzer("DQMGenericClient",
metEfficiency = DQMEDHarvester("DQMGenericClient",
subDirs = cms.untracked.vstring("HLT/MET/*"),
verbose = cms.untracked.uint32(0), # Set to 2 for all messages
resolution = cms.vstring(),
Expand All @@ -15,6 +16,37 @@

)

NoBPTXEfficiency = DQMEDHarvester("DQMGenericClient",
subDirs = cms.untracked.vstring("HLT/NoBPTX/*"),
verbose = cms.untracked.uint32(0), # Set to 2 for all messages
resolution = cms.vstring(),
efficiency = cms.vstring(
"effic_jetE 'Calo jet energy turnON; Jet E [GeV]; Efficiency' jetE_numerator jetE_denominator",
"effic_jetE_variable 'Calo jet energy turnON; Jet E [GeV]; Efficiency' jetE_variable_numerator jetE_variable_denominator",
"effic_jetEta 'Calo jet eta eff; Jet #eta; Efficiency' jetEta_numerator jetEta_denominator",
"effic_jetPhi 'Calo jet phi eff; Jet #phi; Efficiency' jetPhi_numerator jetPhi_denominator",
"effic_muonPt 'Muon pt turnON; DisplacedStandAlone Muon p_{T} [GeV]; Efficiency' muonPt_numerator muonPt_denominator",
"effic_muonPt_variable 'Muon pt turnON; DisplacedStandAlone Muon p_{T} [GeV]; Efficiency' muonPt_variable_numerator muonPt_variable_denominator",
"effic_muonEta 'Muon eta eff; DisplacedStandAlone Muon #eta; Efficiency' muonEta_numerator muonEta_denominator",
"effic_muonPhi 'Muon phi eff; DisplacedStandAlone Muon #phi; Efficiency' muonPhi_numerator muonPhi_denominator",
),
efficiencyProfile = cms.untracked.vstring(
"effic_jetE_vs_LS 'Calo jet energy efficiency vs LS; LS; Jet p_{T} Efficiency' jetEVsLS_numerator jetEVsLS_denominator",
"effic_jetEta_vs_LS 'Calo jet eta efficiency vs LS; LS; Jet #eta Efficiency' jetEtaVsLS_numerator jetEtaVsLS_denominator",
"effic_jetPhi_vs_LS 'Calo jet phi efficiency vs LS; LS; Jet #phi Efficiency' jetPhiVsLS_numerator jetPhiVsLS_denominator",
"effic_muonPt_vs_LS 'Muon pt efficiency vs LS; LS; DSA Muon p_{T} Efficiency' muonPtVsLS_numerator muonPtVsLS_denominator",
"effic_muonEta_vs_LS 'Muon eta efficiency vs LS; LS; DSA Muon #eta Efficiency' muonEtaVsLS_numerator muonEtaVsLS_denominator",
"effic_muonPhi_vs_LS 'Muon phi efficiency vs LS; LS; DSA Muon #phi Efficiency' muonPhiVsLS_numerator muonPhiVsLS_denominator",
"effic_jetE_vs_BX 'Calo jet energy efficiency vs BX; BX; Jet p_{T} Efficiency' jetEVsBX_numerator jetEVsBX_denominator",
"effic_jetEta_vs_BX 'Calo jet eta efficiency vs BX; BX; Jet #eta Efficiency' jetEtaVsBX_numerator jetEtaVsBX_denominator",
"effic_jetPhi_vs_BX 'Calo jet phi efficiency vs BX; BX; Jet #phi Efficiency' jetPhiVsBX_numerator jetPhiVsBX_denominator",
"effic_muonPt_vs_BX 'Muon pt efficiency vs BX; BX; DSA Muon p_{T} Efficiency' muonPtVsBX_numerator muonPtVsBX_denominator",
"effic_muonEta_vs_BX 'Muon eta efficiency vs BX; BX; DSA Muon #eta Efficiency' muonEtaVsBX_numerator muonEtaVsBX_denominator",
"effic_muonPhi_vs_BX 'Muon phi efficiency vs BX; BX; DSA Muon #phi Efficiency' muonPhiVsBX_numerator muonPhiVsBX_denominator",
),
)

exoticaClient = cms.Sequence(
metEfficiency
+ NoBPTXEfficiency
)
2 changes: 2 additions & 0 deletions DQMOffline/Trigger/python/ExoticaMonitoring_cff.py
@@ -1,7 +1,9 @@
import FWCore.ParameterSet.Config as cms

from DQMOffline.Trigger.METMonitor_cff import *
from DQMOffline.Trigger.NoBPTXMonitor_cff import *

exoticaMonitorHLT = cms.Sequence(
exoHLTMETmonitoring
+ exoHLTNoBPTXmonitoring
)
22 changes: 22 additions & 0 deletions DQMOffline/Trigger/python/NoBPTXMonitor_cff.py
@@ -0,0 +1,22 @@
import FWCore.ParameterSet.Config as cms

from DQMOffline.Trigger.NoBPTXMonitor_cfi import hltNoBPTXmonitoring

hltNoBPTXJetE70Monitoring = hltNoBPTXmonitoring.clone()
hltNoBPTXJetE70Monitoring.FolderName = cms.string('HLT/NoBPTX/JetE70/')
hltNoBPTXJetE70Monitoring.numGenericTriggerEventPSet.hltPaths = cms.vstring("HLT_UncorrectedJetE70_NoBPTX3BX_v*") #HLT_ZeroBias_v*

hltNoBPTXL2Mu40Monitoring = hltNoBPTXmonitoring.clone()
hltNoBPTXL2Mu40Monitoring.FolderName = cms.string('HLT/NoBPTX/L2Mu40/')
hltNoBPTXL2Mu40Monitoring.numGenericTriggerEventPSet.hltPaths = cms.vstring("HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v*") #HLT_ZeroBias_v*

hltNoBPTXL2Mu45Monitoring = hltNoBPTXmonitoring.clone()
hltNoBPTXL2Mu45Monitoring.FolderName = cms.string('HLT/NoBPTX/L2Mu45/')
hltNoBPTXL2Mu45Monitoring.numGenericTriggerEventPSet.hltPaths = cms.vstring("HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v*") #HLT_ZeroBias_v*

exoHLTNoBPTXmonitoring = cms.Sequence(
hltNoBPTXmonitoring
+ hltNoBPTXJetE70Monitoring
+ hltNoBPTXL2Mu40Monitoring
+ hltNoBPTXL2Mu45Monitoring
)
60 changes: 60 additions & 0 deletions DQMOffline/Trigger/python/NoBPTXMonitor_cfi.py
@@ -0,0 +1,60 @@
import FWCore.ParameterSet.Config as cms

from DQMOffline.Trigger.NoBPTXMonitoring_cfi import NoBPTXMonitoring

hltNoBPTXmonitoring = NoBPTXMonitoring.clone()
hltNoBPTXmonitoring.FolderName = cms.string('HLT/NoBPTX/JetE60/')
hltNoBPTXmonitoring.histoPSet.jetEPSet = cms.PSet(
nbins = cms.uint32(100),
xmin = cms.double(-0.5),
xmax = cms.double(999.5),
)
hltNoBPTXmonitoring.histoPSet.jetEtaPSet = cms.PSet(
nbins = cms.uint32(100),
xmin = cms.double(-5.),
xmax = cms.double(5.),
)
hltNoBPTXmonitoring.histoPSet.jetPhiPSet = cms.PSet(
nbins = cms.uint32(64),
xmin = cms.double(-3.2),
xmax = cms.double(3.2),
)
hltNoBPTXmonitoring.histoPSet.muonPtPSet = cms.PSet(
nbins = cms.uint32(100),
xmin = cms.double(-0.5),
xmax = cms.double(999.5),
)
hltNoBPTXmonitoring.histoPSet.muonEtaPSet = cms.PSet(
nbins = cms.uint32(100),
xmin = cms.double(-5.),
xmax = cms.double(5.),
)
hltNoBPTXmonitoring.histoPSet.muonPhiPSet = cms.PSet(
nbins = cms.uint32(64),
xmin = cms.double(-3.2),
xmax = cms.double(3.2),
)
hltNoBPTXmonitoring.histoPSet.bxPSet = cms.PSet(
nbins = cms.uint32(3600),
)
hltNoBPTXmonitoring.jets = cms.InputTag("ak4CaloJets")
hltNoBPTXmonitoring.muons = cms.InputTag("displacedStandAloneMuons")

hltNoBPTXmonitoring.numGenericTriggerEventPSet.andOr = cms.bool( False )
#hltNoBPTXmonitoring.numGenericTriggerEventPSet.dbLabel = cms.string("ExoDQMTrigger") # it does not exist yet, we should consider the possibility of using the DB, but as it is now it will need a label per path !
hltNoBPTXmonitoring.numGenericTriggerEventPSet.andOrHlt = cms.bool(True)# True:=OR; False:=AND
hltNoBPTXmonitoring.numGenericTriggerEventPSet.hltInputTag = cms.InputTag( "TriggerResults::HLT" )
hltNoBPTXmonitoring.numGenericTriggerEventPSet.hltPaths = cms.vstring("HLT_UncorrectedJetE60_NoBPTX3BX_v*") # HLT_ZeroBias_v*
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about HLT_UncorrectedJetE70_NoBPTX3BX ?

#hltNoBPTXmonitoring.numGenericTriggerEventPSet.hltDBKey = cms.string("EXO_HLT_NoBPTX")
hltNoBPTXmonitoring.numGenericTriggerEventPSet.errorReplyHlt = cms.bool( False )
hltNoBPTXmonitoring.numGenericTriggerEventPSet.verbosityLevel = cms.uint32(1)

hltNoBPTXmonitoring.denGenericTriggerEventPSet.andOr = cms.bool( False )
hltNoBPTXmonitoring.denGenericTriggerEventPSet.dcsInputTag = cms.InputTag( "scalersRawToDigi" )
hltNoBPTXmonitoring.denGenericTriggerEventPSet.dcsPartitions = cms.vint32 ( 24, 25, 26, 27, 28, 29 ) # 24-27: strip, 28-29: pixel, we should add all other detectors !
hltNoBPTXmonitoring.denGenericTriggerEventPSet.andOrDcs = cms.bool( False )
hltNoBPTXmonitoring.denGenericTriggerEventPSet.errorReplyDcs = cms.bool( True )
hltNoBPTXmonitoring.denGenericTriggerEventPSet.verbosityLevel = cms.uint32(1)

hltNoBPTXmonitoring.muonSelection = cms.string("hitPattern.dtStationsWithValidHits > 3 & hitPattern.numberOfValidMuonRPCHits > 1 & hitPattern.numberOfValidMuonCSCHits < 1")
hltNoBPTXmonitoring.jetSelection = cms.string("abs(eta) < 1.")