File indexing completed on 2025-02-14 03:16:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "DataFormats/Provenance/interface/EventID.h"
0014 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
0015 #include "FWCore/Framework/interface/ESProducer.h"
0016 #include "FWCore/Framework/interface/IOVSyncValue.h"
0017 #include "FWCore/Framework/interface/SourceFactory.h"
0018 #include "FWCore/Framework/interface/ValidityInterval.h"
0019 #include "FWCore/Integration/interface/ESTestRecords.h"
0020 #include "FWCore/Integration/interface/IOVTestInfo.h"
0021 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0022 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0023 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0025
0026 #include <memory>
0027
0028 namespace edmtest {
0029
0030 class RunLumiESSource : public edm::EventSetupRecordIntervalFinder, public edm::ESProducer {
0031 public:
0032 RunLumiESSource(edm::ParameterSet const&);
0033
0034 std::unique_ptr<IOVTestInfo> produce(ESTestRecordC const&);
0035 std::unique_ptr<IOVTestInfo> produceNonEmptyLabel(ESTestRecordC const&);
0036
0037 static void fillDescriptions(edm::ConfigurationDescriptions&);
0038
0039 private:
0040 void setIntervalFor(edm::eventsetup::EventSetupRecordKey const&,
0041 edm::IOVSyncValue const&,
0042 edm::ValidityInterval&) override;
0043
0044 bool isConcurrentFinder() const override { return true; }
0045 };
0046
0047 RunLumiESSource::RunLumiESSource(edm::ParameterSet const&) {
0048 findingRecord<ESTestRecordC>();
0049 setWhatProduced(this);
0050 setWhatProduced(this, &edmtest::RunLumiESSource::produceNonEmptyLabel, edm::es::Label("nonEmptyLabel"));
0051 }
0052
0053 std::unique_ptr<IOVTestInfo> RunLumiESSource::produce(ESTestRecordC const& record) {
0054 auto data = std::make_unique<IOVTestInfo>();
0055
0056 edm::ValidityInterval iov = record.validityInterval();
0057 edm::LogAbsolute("RunLumiESSource") << "RunLumiESSource::produce startIOV = " << iov.first().eventID().run() << ":"
0058 << iov.first().luminosityBlockNumber()
0059 << " endIOV = " << iov.last().eventID().run() << ":"
0060 << iov.last().luminosityBlockNumber() << " IOV index = " << record.iovIndex()
0061 << " cache identifier = " << record.cacheIdentifier();
0062 data->iovStartRun_ = iov.first().eventID().run();
0063 data->iovStartLumi_ = iov.first().luminosityBlockNumber();
0064 data->iovEndRun_ = iov.last().eventID().run();
0065 data->iovEndLumi_ = iov.last().luminosityBlockNumber();
0066 data->iovIndex_ = record.iovIndex();
0067 data->cacheIdentifier_ = record.cacheIdentifier();
0068 return data;
0069 }
0070
0071 std::unique_ptr<IOVTestInfo> RunLumiESSource::produceNonEmptyLabel(ESTestRecordC const& record) {
0072 auto data = std::make_unique<IOVTestInfo>();
0073
0074 edm::ValidityInterval iov = record.validityInterval();
0075 edm::LogAbsolute("RunLumiESSource") << "RunLumiESSource::produceNonEmptyLabel startIOV = "
0076 << iov.first().eventID().run() << ":" << iov.first().luminosityBlockNumber()
0077 << " endIOV = " << iov.last().eventID().run() << ":"
0078 << iov.last().luminosityBlockNumber() << " IOV index = " << record.iovIndex()
0079 << " cache identifier = " << record.cacheIdentifier();
0080 data->iovStartRun_ = iov.first().eventID().run();
0081 data->iovStartLumi_ = iov.first().luminosityBlockNumber();
0082 data->iovEndRun_ = iov.last().eventID().run();
0083 data->iovEndLumi_ = iov.last().luminosityBlockNumber();
0084 data->iovIndex_ = record.iovIndex();
0085 data->cacheIdentifier_ = record.cacheIdentifier();
0086 return data;
0087 }
0088
0089 void RunLumiESSource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0090 edm::ParameterSetDescription desc;
0091 descriptions.addDefault(desc);
0092 }
0093
0094 void RunLumiESSource::setIntervalFor(edm::eventsetup::EventSetupRecordKey const&,
0095 edm::IOVSyncValue const& syncValue,
0096 edm::ValidityInterval& interval) {
0097 interval = edm::ValidityInterval(syncValue, syncValue);
0098 }
0099 }
0100 using namespace edmtest;
0101 DEFINE_FWK_EVENTSETUP_SOURCE(RunLumiESSource);