diff --git a/Alignment/CommonAlignmentProducer/plugins/BuildFile.xml b/Alignment/CommonAlignmentProducer/plugins/BuildFile.xml
index 781fb09984b88..3c7f11b7dbec7 100644
--- a/Alignment/CommonAlignmentProducer/plugins/BuildFile.xml
+++ b/Alignment/CommonAlignmentProducer/plugins/BuildFile.xml
@@ -53,5 +53,6 @@
+
diff --git a/Alignment/CommonAlignmentProducer/plugins/LSNumberFilter.cc b/Alignment/CommonAlignmentProducer/plugins/LSNumberFilter.cc
index 894cd67bdfd68..e13de5c930ad7 100644
--- a/Alignment/CommonAlignmentProducer/plugins/LSNumberFilter.cc
+++ b/Alignment/CommonAlignmentProducer/plugins/LSNumberFilter.cc
@@ -1,10 +1,11 @@
-#include "FWCore/Framework/interface/stream/EDFilter.h"
#include "FWCore/Framework/interface/Event.h"
-#include "FWCore/Framework/interface/Run.h"
-#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/Framework/interface/EventSetup.h"
+#include "FWCore/Framework/interface/MakerMacros.h"
+#include "FWCore/Framework/interface/Run.h"
+#include "FWCore/Framework/interface/stream/EDFilter.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
+#include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
//
// class declaration
@@ -13,17 +14,30 @@
class LSNumberFilter : public edm::stream::EDFilter<> {
public:
explicit LSNumberFilter(const edm::ParameterSet&);
- ~LSNumberFilter() override;
+ ~LSNumberFilter() override = default;
+
+ static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
private:
+ void beginRun(edm::Run const&, edm::EventSetup const&) override;
bool filter(edm::Event&, const edm::EventSetup&) override;
- unsigned int minLS;
+ bool is_HLT_vetoed_;
+ const unsigned int minLS_;
+ const std::vector veto_HLT_Menu_;
+ HLTConfigProvider hltConfig_;
};
-LSNumberFilter::LSNumberFilter(const edm::ParameterSet& iConfig)
- : minLS(iConfig.getUntrackedParameter("minLS", 21)) {}
+void LSNumberFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
+ edm::ParameterSetDescription desc;
+ desc.setComment("Filters the first minLS lumisections and reject the run according to the HLT menu name");
+ desc.addUntracked("minLS", 21)->setComment("first LS to accept");
+ desc.addUntracked>("veto_HLT_Menu", {})->setComment("list of HLT menus to reject");
+ descriptions.addWithDefaultLabel(desc);
+}
-LSNumberFilter::~LSNumberFilter() {}
+LSNumberFilter::LSNumberFilter(const edm::ParameterSet& iConfig)
+ : minLS_(iConfig.getUntrackedParameter("minLS", 21)),
+ veto_HLT_Menu_(iConfig.getUntrackedParameter>("veto_HLT_Menu")) {}
//
// member functions
@@ -31,11 +45,27 @@ LSNumberFilter::~LSNumberFilter() {}
// ------------ method called on each new Event ------------
bool LSNumberFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup) {
- if (iEvent.luminosityBlock() < minLS)
+ if ((iEvent.luminosityBlock() < minLS_) || is_HLT_vetoed_) {
return false;
+ }
return true;
}
+void LSNumberFilter::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
+ bool changed{false};
+ hltConfig_.init(iRun, iSetup, "HLT", changed);
+ is_HLT_vetoed_ = false;
+ for (const auto& veto : veto_HLT_Menu_) {
+ std::size_t found = hltConfig_.tableName().find(veto);
+ if (found != std::string::npos) {
+ is_HLT_vetoed_ = true;
+ edm::LogWarning("LSNumberFilter") << "Detected " << veto
+ << " in HLT Config tableName(): " << hltConfig_.tableName()
+ << "; Events of this run will be ignored" << std::endl;
+ break;
+ }
+ }
+}
//define this as a plug-in
DEFINE_FWK_MODULE(LSNumberFilter);
diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli0T_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli0T_cff.py
index 8e4c6a0694880..3efc11e01e7fa 100644
--- a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli0T_cff.py
+++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli0T_cff.py
@@ -151,7 +151,7 @@
seqALCARECOPromptCalibProdSiPixelAli = cms.Sequence(ALCARECOTkAlMinBiasFilterForSiPixelAli*
- lsNumberFilter*
+ LSNumberFilter*
offlineBeamSpot*
SiPixelAliHighPuritySelector*
SiPixelAliTrackRefitter0*
diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHGDiMuon_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHGDiMuon_cff.py
index 7cc13a08481c8..9fae5a852ed78 100644
--- a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHGDiMuon_cff.py
+++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHGDiMuon_cff.py
@@ -123,7 +123,7 @@
fileBlobLabel = cms.string(''))
seqALCARECOPromptCalibProdSiPixelAliHGDiMu = cms.Sequence(ALCARECOTkAlZMuMuFilterForSiPixelAli*
- lsNumberFilter*
+ LSNumberFilter*
offlineBeamSpot*
SiPixelAliHighPuritySelectorHGDimuon*
SiPixelAliTrackRefitterHGDimuon0*
diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHG_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHG_cff.py
index 2c47ea7b6da76..a550d30cb3b84 100644
--- a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHG_cff.py
+++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHG_cff.py
@@ -64,7 +64,7 @@
fileBlobLabel = cms.string(''))
seqALCARECOPromptCalibProdSiPixelAliHG = cms.Sequence(ALCARECOTkAlMinBiasFilterForSiPixelAliHG*
- lsNumberFilter*
+ LSNumberFilter*
offlineBeamSpot*
SiPixelAliHighPuritySelectorHG*
SiPixelAliTrackRefitterHG0*
diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli_cff.py
index e9aa2c08d81b9..366910788be41 100644
--- a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli_cff.py
+++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAli_cff.py
@@ -149,7 +149,7 @@
seqALCARECOPromptCalibProdSiPixelAli = cms.Sequence(ALCARECOTkAlMinBiasFilterForSiPixelAli*
- lsNumberFilter*
+ LSNumberFilter*
offlineBeamSpot*
SiPixelAliHighPuritySelector*
SiPixelAliTrackRefitter0*
diff --git a/Alignment/CommonAlignmentProducer/python/LSNumberFilter_cfi.py b/Alignment/CommonAlignmentProducer/python/LSNumberFilter_cfi.py
index 5fa6d8c3b08ac..6a57305771cb1 100644
--- a/Alignment/CommonAlignmentProducer/python/LSNumberFilter_cfi.py
+++ b/Alignment/CommonAlignmentProducer/python/LSNumberFilter_cfi.py
@@ -1,5 +1,5 @@
import FWCore.ParameterSet.Config as cms
-lsNumberFilter = cms.EDFilter("LSNumberFilter",
- minLS = cms.untracked.uint32(21)
- )
+from Alignment.CommonAlignmentProducer.lsNumberFilter_cfi import lsNumberFilter
+LSNumberFilter = lsNumberFilter.clone(minLS = 21,
+ veto_HLT_Menu = ["LumiScan"])
diff --git a/Alignment/CommonAlignmentProducer/python/customizeLSNumberFilterForRelVals.py b/Alignment/CommonAlignmentProducer/python/customizeLSNumberFilterForRelVals.py
index 32bbbb6340325..fe0186ff1982a 100644
--- a/Alignment/CommonAlignmentProducer/python/customizeLSNumberFilterForRelVals.py
+++ b/Alignment/CommonAlignmentProducer/python/customizeLSNumberFilterForRelVals.py
@@ -6,8 +6,8 @@
##
def doNotFilterLS(process):
- if hasattr(process,'lsNumberFilter'):
- process.lsNumberFilter.minLS = 1
+ if hasattr(process,'LSNumberFilter'):
+ process.LSNumberFilter.minLS = 1
return process
##