File indexing completed on 2023-03-17 11:16:40
0001 #ifndef Analysis_AnalysisFilters_interface_RunLumiSelector_h
0002 #define Analysis_AnalysisFilters_interface_RunLumiSelector_h
0003
0004 #ifndef __GCCXML__
0005 #include "FWCore/Framework/interface/ConsumesCollector.h"
0006 #endif
0007 #include "FWCore/Common/interface/EventBase.h"
0008 #include "DataFormats/Common/interface/Handle.h"
0009
0010 #include "PhysicsTools/SelectorUtils/interface/EventSelector.h"
0011 #include "DataFormats/VertexReco/interface/Vertex.h"
0012
0013 #include <vector>
0014 #include <string>
0015
0016
0017 class RunLumiSelector : public EventSelector {
0018 public:
0019 RunLumiSelector() {}
0020
0021 #ifndef __GCCXML__
0022 RunLumiSelector(edm::ParameterSet const& params, edm::ConsumesCollector&& iC) : RunLumiSelector(params) {}
0023 #endif
0024
0025 RunLumiSelector(edm::ParameterSet const& params) {
0026 push_back("RunLumi");
0027
0028 if (params.exists("lumisToProcess")) {
0029 lumis_ = params.getUntrackedParameter<std::vector<edm::LuminosityBlockRange> >("lumisToProcess");
0030 set("RunLumi");
0031 } else {
0032 lumis_.clear();
0033 set("RunLumi", false);
0034 }
0035
0036 retInternal_ = getBitTemplate();
0037 }
0038
0039 bool operator()(edm::EventBase const& ev, pat::strbitset& ret) override {
0040 if (!ignoreCut("RunLumi")) {
0041 bool goodLumi = false;
0042 for (std::vector<edm::LuminosityBlockRange>::const_iterator lumisBegin = lumis_.begin(),
0043 lumisEnd = lumis_.end(),
0044 ilumi = lumisBegin;
0045 ilumi != lumisEnd;
0046 ++ilumi) {
0047 if (ev.id().run() >= ilumi->startRun() && ev.id().run() <= ilumi->endRun() &&
0048 ev.id().luminosityBlock() >= ilumi->startLumi() && ev.id().luminosityBlock() <= ilumi->endLumi()) {
0049 goodLumi = true;
0050 break;
0051 }
0052 }
0053 if (goodLumi)
0054 passCut(ret, "RunLumi");
0055 } else {
0056 passCut(ret, "RunLumi");
0057 }
0058
0059 setIgnored(ret);
0060 return (bool)ret;
0061 }
0062
0063 using EventSelector::operator();
0064
0065 private:
0066 std::vector<edm::LuminosityBlockRange> lumis_;
0067 };
0068
0069 #endif