File indexing completed on 2024-04-06 12:09:58
0001 #include "FWCore/Framework/interface/MakerMacros.h"
0002 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0003 #include "DQMServices/Core/interface/DQMStore.h"
0004 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0005 #include "DQMOffline/Trigger/plugins/TriggerDQMBase.h"
0006 #include "CommonTools/TriggerUtils/interface/GenericTriggerEventFlag.h"
0007 #include "CommonTools/Utils/interface/StringCutObjectSelector.h"
0008 #include "DataFormats/JetReco/interface/CaloJet.h"
0009 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
0010 #include "DataFormats/TrackReco/interface/Track.h"
0011 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0012
0013 #include <string>
0014 #include <vector>
0015
0016 class NoBPTXMonitor : public DQMEDAnalyzer, public TriggerDQMBase {
0017 public:
0018 typedef dqm::reco::MonitorElement MonitorElement;
0019 typedef dqm::reco::DQMStore DQMStore;
0020
0021 NoBPTXMonitor(const edm::ParameterSet&);
0022 ~NoBPTXMonitor() throw() override;
0023 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0024
0025 protected:
0026 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0027 void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;
0028
0029 private:
0030 const std::string folderName_;
0031
0032 const bool requireValidHLTPaths_;
0033 bool hltPathsAreValid_;
0034
0035 edm::EDGetTokenT<reco::CaloJetCollection> jetToken_;
0036 edm::EDGetTokenT<reco::TrackCollection> muonToken_;
0037
0038 std::vector<double> jetE_variable_binning_;
0039 MEbinning jetE_binning_;
0040 MEbinning jetEta_binning_;
0041 MEbinning jetPhi_binning_;
0042 std::vector<double> muonPt_variable_binning_;
0043 MEbinning muonPt_binning_;
0044 MEbinning muonEta_binning_;
0045 MEbinning muonPhi_binning_;
0046 MEbinning ls_binning_;
0047 MEbinning bx_binning_;
0048
0049 ObjME jetENoBPTX_;
0050 ObjME jetENoBPTX_variableBinning_;
0051 ObjME jetEVsLS_;
0052 ObjME jetEVsBX_;
0053 ObjME jetEtaNoBPTX_;
0054 ObjME jetEtaVsLS_;
0055 ObjME jetEtaVsBX_;
0056 ObjME jetPhiNoBPTX_;
0057 ObjME jetPhiVsLS_;
0058 ObjME jetPhiVsBX_;
0059 ObjME muonPtNoBPTX_;
0060 ObjME muonPtNoBPTX_variableBinning_;
0061 ObjME muonPtVsLS_;
0062 ObjME muonPtVsBX_;
0063 ObjME muonEtaNoBPTX_;
0064 ObjME muonEtaVsLS_;
0065 ObjME muonEtaVsBX_;
0066 ObjME muonPhiNoBPTX_;
0067 ObjME muonPhiVsLS_;
0068 ObjME muonPhiVsBX_;
0069
0070 std::unique_ptr<GenericTriggerEventFlag> num_genTriggerEventFlag_;
0071 std::unique_ptr<GenericTriggerEventFlag> den_genTriggerEventFlag_;
0072
0073 StringCutObjectSelector<reco::CaloJet, true> jetSelection_;
0074 StringCutObjectSelector<reco::Track, true> muonSelection_;
0075
0076 unsigned int njets_;
0077 unsigned int nmuons_;
0078 };
0079
0080 NoBPTXMonitor::NoBPTXMonitor(const edm::ParameterSet& iConfig)
0081 : folderName_(iConfig.getParameter<std::string>("FolderName")),
0082 requireValidHLTPaths_(iConfig.getParameter<bool>("requireValidHLTPaths")),
0083 hltPathsAreValid_(false),
0084 jetToken_(consumes<reco::CaloJetCollection>(iConfig.getParameter<edm::InputTag>("jets"))),
0085 muonToken_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("muons"))),
0086 jetE_variable_binning_(
0087 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetEBinning")),
0088 jetE_binning_(getHistoPSet(
0089 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("jetEPSet"))),
0090 jetEta_binning_(getHistoPSet(
0091 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("jetEtaPSet"))),
0092 jetPhi_binning_(getHistoPSet(
0093 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("jetPhiPSet"))),
0094 muonPt_variable_binning_(
0095 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("muonPtBinning")),
0096 muonPt_binning_(getHistoPSet(
0097 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("muonPtPSet"))),
0098 muonEta_binning_(getHistoPSet(
0099 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("muonEtaPSet"))),
0100 muonPhi_binning_(getHistoPSet(
0101 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("muonPhiPSet"))),
0102 ls_binning_(
0103 getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet"))),
0104 bx_binning_(getHistoLSPSet(
0105 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("bxPSet"))),
0106 num_genTriggerEventFlag_(new GenericTriggerEventFlag(
0107 iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
0108 den_genTriggerEventFlag_(new GenericTriggerEventFlag(
0109 iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"), consumesCollector(), *this)),
0110 jetSelection_(iConfig.getParameter<std::string>("jetSelection")),
0111 muonSelection_(iConfig.getParameter<std::string>("muonSelection")),
0112 njets_(iConfig.getParameter<unsigned int>("njets")),
0113 nmuons_(iConfig.getParameter<unsigned int>("nmuons")) {}
0114
0115 NoBPTXMonitor::~NoBPTXMonitor() throw() {
0116 if (num_genTriggerEventFlag_) {
0117 num_genTriggerEventFlag_.reset();
0118 }
0119 if (den_genTriggerEventFlag_) {
0120 den_genTriggerEventFlag_.reset();
0121 }
0122 }
0123
0124 void NoBPTXMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const& iSetup) {
0125
0126 if (num_genTriggerEventFlag_ && num_genTriggerEventFlag_->on()) {
0127 num_genTriggerEventFlag_->initRun(iRun, iSetup);
0128 }
0129 if (den_genTriggerEventFlag_ && den_genTriggerEventFlag_->on()) {
0130 den_genTriggerEventFlag_->initRun(iRun, iSetup);
0131 }
0132
0133
0134 hltPathsAreValid_ = (num_genTriggerEventFlag_ && den_genTriggerEventFlag_ && num_genTriggerEventFlag_->on() &&
0135 den_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->allHLTPathsAreValid() &&
0136 den_genTriggerEventFlag_->allHLTPathsAreValid());
0137
0138
0139
0140 if (requireValidHLTPaths_ and (not hltPathsAreValid_)) {
0141 return;
0142 }
0143
0144 std::string histname, histtitle;
0145
0146 std::string currentFolder = folderName_;
0147 ibooker.setCurrentFolder(currentFolder);
0148
0149 histname = "jetE";
0150 histtitle = "jetE";
0151 bookME(ibooker, jetENoBPTX_, histname, histtitle, jetE_binning_.nbins, jetE_binning_.xmin, jetE_binning_.xmax);
0152 setMETitle(jetENoBPTX_, "Jet E [GeV]", "Events / [GeV]");
0153
0154 histname = "jetE_variable";
0155 histtitle = "jetE";
0156 bookME(ibooker, jetENoBPTX_variableBinning_, histname, histtitle, jetE_variable_binning_);
0157 setMETitle(jetENoBPTX_variableBinning_, "Jet E [GeV]", "Events / [GeV]");
0158
0159 histname = "jetEVsLS";
0160 histtitle = "jetE vs LS";
0161 bookME(ibooker,
0162 jetEVsLS_,
0163 histname,
0164 histtitle,
0165 ls_binning_.nbins,
0166 ls_binning_.xmin,
0167 ls_binning_.xmax,
0168 jetE_binning_.xmin,
0169 jetE_binning_.xmax);
0170 setMETitle(jetEVsLS_, "LS", "Jet E [GeV]");
0171
0172 histname = "jetEVsBX";
0173 histtitle = "jetE vs BX";
0174 bookME(ibooker,
0175 jetEVsBX_,
0176 histname,
0177 histtitle,
0178 bx_binning_.nbins,
0179 bx_binning_.xmin,
0180 bx_binning_.xmax,
0181 jetE_binning_.xmin,
0182 jetE_binning_.xmax,
0183 false);
0184 setMETitle(jetEVsBX_, "BX", "Jet E [GeV]");
0185
0186 histname = "jetEta";
0187 histtitle = "jetEta";
0188 bookME(
0189 ibooker, jetEtaNoBPTX_, histname, histtitle, jetEta_binning_.nbins, jetEta_binning_.xmin, jetEta_binning_.xmax);
0190 setMETitle(jetEtaNoBPTX_, "Jet #eta", "Events");
0191
0192 histname = "jetEtaVsLS";
0193 histtitle = "jetEta vs LS";
0194 bookME(ibooker,
0195 jetEtaVsLS_,
0196 histname,
0197 histtitle,
0198 ls_binning_.nbins,
0199 ls_binning_.xmin,
0200 ls_binning_.xmax,
0201 jetEta_binning_.xmin,
0202 jetEta_binning_.xmax,
0203 false);
0204 setMETitle(jetEtaVsLS_, "LS", "Jet #eta");
0205
0206 histname = "jetEtaVsBX";
0207 histtitle = "jetEta vs BX";
0208 bookME(ibooker,
0209 jetEtaVsBX_,
0210 histname,
0211 histtitle,
0212 bx_binning_.nbins,
0213 bx_binning_.xmin,
0214 bx_binning_.xmax,
0215 jetEta_binning_.xmin,
0216 jetEta_binning_.xmax,
0217 false);
0218 setMETitle(jetEtaVsBX_, "BX", "Jet #eta");
0219
0220 histname = "jetPhi";
0221 histtitle = "jetPhi";
0222 bookME(
0223 ibooker, jetPhiNoBPTX_, histname, histtitle, jetPhi_binning_.nbins, jetPhi_binning_.xmin, jetPhi_binning_.xmax);
0224 setMETitle(jetPhiNoBPTX_, "Jet #phi", "Events");
0225
0226 histname = "jetPhiVsLS";
0227 histtitle = "jetPhi vs LS";
0228 bookME(ibooker,
0229 jetPhiVsLS_,
0230 histname,
0231 histtitle,
0232 ls_binning_.nbins,
0233 ls_binning_.xmin,
0234 ls_binning_.xmax,
0235 jetPhi_binning_.xmin,
0236 jetPhi_binning_.xmax,
0237 false);
0238 setMETitle(jetPhiVsLS_, "LS", "Jet #phi");
0239
0240 histname = "jetPhiVsBX";
0241 histtitle = "jetPhi vs BX";
0242 bookME(ibooker,
0243 jetPhiVsBX_,
0244 histname,
0245 histtitle,
0246 bx_binning_.nbins,
0247 bx_binning_.xmin,
0248 bx_binning_.xmax,
0249 jetPhi_binning_.xmin,
0250 jetPhi_binning_.xmax,
0251 false);
0252 setMETitle(jetPhiVsBX_, "BX", "Jet #phi");
0253
0254 histname = "muonPt";
0255 histtitle = "muonPt";
0256 bookME(
0257 ibooker, muonPtNoBPTX_, histname, histtitle, muonPt_binning_.nbins, muonPt_binning_.xmin, muonPt_binning_.xmax);
0258 setMETitle(muonPtNoBPTX_, "DisplacedStandAlone Muon p_{T} [GeV]", "Events / [GeV]");
0259
0260 histname = "muonPt_variable";
0261 histtitle = "muonPt";
0262 bookME(ibooker, muonPtNoBPTX_variableBinning_, histname, histtitle, muonPt_variable_binning_);
0263 setMETitle(muonPtNoBPTX_variableBinning_, "DisplacedStandAlone Muon p_{T} [GeV]", "Events / [GeV]");
0264
0265 histname = "muonPtVsLS";
0266 histtitle = "muonPt vs LS";
0267 bookME(ibooker,
0268 muonPtVsLS_,
0269 histname,
0270 histtitle,
0271 ls_binning_.nbins,
0272 ls_binning_.xmin,
0273 ls_binning_.xmax,
0274 muonPt_binning_.xmin,
0275 muonPt_binning_.xmax,
0276 false);
0277 setMETitle(muonPtVsLS_, "LS", "DisplacedStandAlone Muon p_{T} [GeV]");
0278
0279 histname = "muonPtVsBX";
0280 histtitle = "muonPt vs BX";
0281 bookME(ibooker,
0282 muonPtVsBX_,
0283 histname,
0284 histtitle,
0285 bx_binning_.nbins,
0286 bx_binning_.xmin,
0287 bx_binning_.xmax,
0288 muonPt_binning_.xmin,
0289 muonPt_binning_.xmax,
0290 false);
0291 setMETitle(muonPtVsBX_, "BX", "DisplacedStandAlone Muon p_{T} [GeV]");
0292
0293 histname = "muonEta";
0294 histtitle = "muonEta";
0295 bookME(ibooker,
0296 muonEtaNoBPTX_,
0297 histname,
0298 histtitle,
0299 muonEta_binning_.nbins,
0300 muonEta_binning_.xmin,
0301 muonEta_binning_.xmax);
0302 setMETitle(muonEtaNoBPTX_, "DisplacedStandAlone Muon #eta", "Events");
0303
0304 histname = "muonEtaVsLS";
0305 histtitle = "muonEta vs LS";
0306 bookME(ibooker,
0307 muonEtaVsLS_,
0308 histname,
0309 histtitle,
0310 ls_binning_.nbins,
0311 ls_binning_.xmin,
0312 ls_binning_.xmax,
0313 muonEta_binning_.xmin,
0314 muonEta_binning_.xmax,
0315 false);
0316 setMETitle(muonEtaVsLS_, "LS", "DisplacedStandAlone Muon #eta");
0317
0318 histname = "muonEtaVsBX";
0319 histtitle = "muonEta vs BX";
0320 bookME(ibooker,
0321 muonEtaVsBX_,
0322 histname,
0323 histtitle,
0324 bx_binning_.nbins,
0325 bx_binning_.xmin,
0326 bx_binning_.xmax,
0327 muonEta_binning_.xmin,
0328 muonEta_binning_.xmax,
0329 false);
0330 setMETitle(muonEtaVsBX_, "BX", "DisplacedStandAlone Muon #eta");
0331
0332 histname = "muonPhi";
0333 histtitle = "muonPhi";
0334 bookME(ibooker,
0335 muonPhiNoBPTX_,
0336 histname,
0337 histtitle,
0338 muonPhi_binning_.nbins,
0339 muonPhi_binning_.xmin,
0340 muonPhi_binning_.xmax);
0341 setMETitle(muonPhiNoBPTX_, "DisplacedStandAlone Muon #phi", "Events");
0342
0343 histname = "muonPhiVsLS";
0344 histtitle = "muonPhi vs LS";
0345 bookME(ibooker,
0346 muonPhiVsLS_,
0347 histname,
0348 histtitle,
0349 ls_binning_.nbins,
0350 ls_binning_.xmin,
0351 ls_binning_.xmax,
0352 muonPhi_binning_.xmin,
0353 muonPhi_binning_.xmax,
0354 false);
0355 setMETitle(muonPhiVsLS_, "LS", "DisplacedStandAlone Muon #phi");
0356
0357 histname = "muonPhiVsBX";
0358 histtitle = "muonPhi vs BX";
0359 bookME(ibooker,
0360 muonPhiVsBX_,
0361 histname,
0362 histtitle,
0363 bx_binning_.nbins,
0364 bx_binning_.xmin,
0365 bx_binning_.xmax,
0366 muonPhi_binning_.xmin,
0367 muonPhi_binning_.xmax,
0368 false);
0369 setMETitle(muonPhiVsBX_, "BX", "DisplacedStandAlone Muon #phi");
0370 }
0371
0372 void NoBPTXMonitor::analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) {
0373
0374
0375 if (requireValidHLTPaths_ and (not hltPathsAreValid_)) {
0376 return;
0377 }
0378
0379
0380 if (den_genTriggerEventFlag_->on() && !den_genTriggerEventFlag_->accept(iEvent, iSetup)) {
0381 return;
0382 }
0383
0384 const int ls = iEvent.id().luminosityBlock();
0385 const int bx = iEvent.bunchCrossing();
0386
0387 edm::Handle<reco::CaloJetCollection> jetHandle;
0388 iEvent.getByToken(jetToken_, jetHandle);
0389
0390 if ((unsigned int)(jetHandle->size()) < njets_)
0391 return;
0392
0393 std::vector<reco::CaloJet> jets;
0394 for (auto const& j : *jetHandle) {
0395 if (jetSelection_(j))
0396 jets.push_back(j);
0397 }
0398
0399 if ((unsigned int)(jets.size()) < njets_)
0400 return;
0401
0402 double jetE = -999;
0403 double jetEta = -999;
0404 double jetPhi = -999;
0405 if (!jets.empty()) {
0406 jetE = jets[0].energy();
0407 jetEta = jets[0].eta();
0408 jetPhi = jets[0].phi();
0409 }
0410
0411 edm::Handle<reco::TrackCollection> DSAHandle;
0412 iEvent.getByToken(muonToken_, DSAHandle);
0413
0414 if ((unsigned int)(DSAHandle->size()) < nmuons_)
0415 return;
0416
0417 std::vector<reco::Track> muons;
0418 for (auto const& m : *DSAHandle) {
0419 if (muonSelection_(m))
0420 muons.push_back(m);
0421 }
0422
0423 if ((unsigned int)(muons.size()) < nmuons_)
0424 return;
0425
0426 double muonPt = -999;
0427 double muonEta = -999;
0428 double muonPhi = -999;
0429 if (!muons.empty()) {
0430 muonPt = muons[0].pt();
0431 muonEta = muons[0].eta();
0432 muonPhi = muons[0].phi();
0433 }
0434
0435
0436 const bool trg_passed = (num_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->accept(iEvent, iSetup));
0437
0438
0439 jetENoBPTX_.fill(trg_passed, jetE);
0440 jetENoBPTX_variableBinning_.fill(trg_passed, jetE);
0441 jetEtaNoBPTX_.fill(trg_passed, jetEta);
0442 jetPhiNoBPTX_.fill(trg_passed, jetPhi);
0443 muonPtNoBPTX_.fill(trg_passed, muonPt);
0444 muonPtNoBPTX_variableBinning_.fill(trg_passed, muonPt);
0445 muonEtaNoBPTX_.fill(trg_passed, muonEta);
0446 muonPhiNoBPTX_.fill(trg_passed, muonPhi);
0447
0448 jetEVsLS_.fill(trg_passed, ls, jetE);
0449
0450 if (trg_passed) {
0451 jetEVsBX_.numerator->Fill(bx, jetE);
0452 jetEtaVsLS_.numerator->Fill(ls, jetEta);
0453 jetEtaVsBX_.numerator->Fill(bx, jetEta);
0454 jetPhiVsLS_.numerator->Fill(ls, jetPhi);
0455 jetPhiVsBX_.numerator->Fill(bx, jetPhi);
0456 muonPtVsLS_.numerator->Fill(ls, muonPt);
0457 muonPtVsBX_.numerator->Fill(bx, muonPt);
0458 muonEtaVsLS_.numerator->Fill(ls, muonEta);
0459 muonEtaVsBX_.numerator->Fill(bx, muonEta);
0460 muonPhiVsLS_.numerator->Fill(ls, muonPhi);
0461 muonPhiVsBX_.numerator->Fill(bx, muonPhi);
0462 }
0463 }
0464
0465 void NoBPTXMonitor::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0466 edm::ParameterSetDescription desc;
0467 desc.add<std::string>("FolderName", "HLT/NoBPTX");
0468 desc.add<bool>("requireValidHLTPaths", true);
0469
0470 desc.add<edm::InputTag>("jets", edm::InputTag("ak4CaloJets"));
0471 desc.add<edm::InputTag>("muons", edm::InputTag("displacedStandAloneMuons"));
0472 desc.add<std::string>("jetSelection", "pt > 0");
0473 desc.add<std::string>("muonSelection", "pt > 0");
0474 desc.add<unsigned int>("njets", 0);
0475 desc.add<unsigned int>("nmuons", 0);
0476
0477 edm::ParameterSetDescription genericTriggerEventPSet;
0478 GenericTriggerEventFlag::fillPSetDescription(genericTriggerEventPSet);
0479 desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
0480 desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
0481
0482 edm::ParameterSetDescription histoPSet;
0483 edm::ParameterSetDescription jetEPSet;
0484 edm::ParameterSetDescription jetEtaPSet;
0485 edm::ParameterSetDescription jetPhiPSet;
0486 edm::ParameterSetDescription muonPtPSet;
0487 edm::ParameterSetDescription muonEtaPSet;
0488 edm::ParameterSetDescription muonPhiPSet;
0489 edm::ParameterSetDescription lsPSet;
0490 edm::ParameterSetDescription bxPSet;
0491 fillHistoPSetDescription(jetEPSet);
0492 fillHistoPSetDescription(jetEtaPSet);
0493 fillHistoPSetDescription(jetPhiPSet);
0494 fillHistoPSetDescription(muonPtPSet);
0495 fillHistoPSetDescription(muonEtaPSet);
0496 fillHistoPSetDescription(muonPhiPSet);
0497 fillHistoPSetDescription(lsPSet);
0498 fillHistoLSPSetDescription(bxPSet);
0499 histoPSet.add<edm::ParameterSetDescription>("jetEPSet", jetEPSet);
0500 histoPSet.add<edm::ParameterSetDescription>("jetEtaPSet", jetEtaPSet);
0501 histoPSet.add<edm::ParameterSetDescription>("jetPhiPSet", jetPhiPSet);
0502 histoPSet.add<edm::ParameterSetDescription>("muonPtPSet", muonPtPSet);
0503 histoPSet.add<edm::ParameterSetDescription>("muonEtaPSet", muonEtaPSet);
0504 histoPSet.add<edm::ParameterSetDescription>("muonPhiPSet", muonPhiPSet);
0505 histoPSet.add<edm::ParameterSetDescription>("lsPSet", lsPSet);
0506 histoPSet.add<edm::ParameterSetDescription>("bxPSet", bxPSet);
0507 std::vector<double> bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
0508 170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.};
0509 histoPSet.add<std::vector<double> >("jetEBinning", bins);
0510 histoPSet.add<std::vector<double> >("muonPtBinning", bins);
0511
0512 desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
0513
0514 descriptions.add("NoBPTXMonitoring", desc);
0515 }
0516
0517
0518 DEFINE_FWK_MODULE(NoBPTXMonitor);