File indexing completed on 2023-10-25 10:00:54
0001 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0002 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0003 #include "FWCore/Framework/interface/Event.h"
0004 #include "FWCore/Framework/interface/LuminosityBlock.h"
0005 #include "FWCore/Framework/interface/NoDataException.h"
0006 #include "FWCore/Framework/interface/NoRecordException.h"
0007 #include "FWCore/Framework/interface/ESHandle.h"
0008 #include "FWCore/Framework/interface/MakerMacros.h"
0009 #include "FWCore/Framework/interface/EventSetup.h"
0010 #include "FWCore/Framework/interface/EventSetupRecord.h"
0011 #include "RecoLuminosity/LumiProducer/interface/LumiCorrectionParam.h"
0012 #include "RecoLuminosity/LumiProducer/interface/LumiCorrectionParamRcd.h"
0013 #include "DataFormats/Luminosity/interface/LumiSummary.h"
0014 #include <iostream>
0015
0016 namespace edm {
0017 class EventSetup;
0018 }
0019
0020 using namespace std;
0021 using namespace edm;
0022
0023 class TestLumiCorrectionSource : public edm::one::EDAnalyzer<> {
0024 public:
0025 explicit TestLumiCorrectionSource(edm::ParameterSet const&);
0026 virtual ~TestLumiCorrectionSource();
0027
0028 virtual void analyze(edm::Event const& e, edm::EventSetup const& c);
0029 virtual void endLuminosityBlock(LuminosityBlock const& lumiBlock, EventSetup const& c);
0030
0031 private:
0032 const edm::ESGetToken<LumiCorrectionParam, LumiCorrectionParamRcd> lumiCorrectionToken_;
0033 };
0034
0035
0036
0037 TestLumiCorrectionSource::TestLumiCorrectionSource(edm::ParameterSet const& ps)
0038 : lumiCorrectionToken_(esConsumes<edm::Transition::EndLuminosityBlock>()) {
0039 consumes<LumiSummary, edm::InLumi>(edm::InputTag("lumiProducer", ""));
0040 }
0041
0042
0043
0044 TestLumiCorrectionSource::~TestLumiCorrectionSource() {}
0045
0046
0047
0048 void TestLumiCorrectionSource::analyze(edm::Event const& e, edm::EventSetup const&) {}
0049
0050
0051
0052 void TestLumiCorrectionSource::endLuminosityBlock(edm::LuminosityBlock const& lumiBlock, EventSetup const& es) {
0053 std::cout << " I AM IN RUN NUMBER " << lumiBlock.run() << " LS NUMBER " << lumiBlock.luminosityBlock() << std::endl;
0054 edm::eventsetup::EventSetupRecordKey recordKey(
0055 edm::eventsetup::EventSetupRecordKey::TypeTag::findType("LumiCorrectionParamRcd"));
0056 if (recordKey.type() == edm::eventsetup::EventSetupRecordKey::TypeTag()) {
0057 std::cout << "Record \"LumiCorrectionParamRcd"
0058 << "\" does not exist " << std::endl;
0059 }
0060 try {
0061 edm::Handle<LumiSummary> lumisummary;
0062 lumiBlock.getByLabel("lumiProducer", lumisummary);
0063 float instlumi = lumisummary->avgInsDelLumi();
0064 std::cout << "raw data tag " << lumisummary->lumiVersion() << std::endl;
0065 ;
0066 float correctedinstlumi = instlumi;
0067 float recinstlumi = lumisummary->avgInsRecLumi();
0068 float corrfac = 1.;
0069 auto datahandle = es.getHandle(lumiCorrectionToken_);
0070 if (datahandle.isValid()) {
0071 const LumiCorrectionParam* mydata = datahandle.product();
0072 std::cout << "correctionparams " << *mydata << std::endl;
0073 corrfac = mydata->getCorrection(instlumi);
0074 } else {
0075 std::cout << "no valid record found" << std::endl;
0076 }
0077 correctedinstlumi = instlumi * corrfac;
0078 std::cout << "correctedinstlumi " << correctedinstlumi << std::endl;
0079 float correctedinstRecLumi = recinstlumi * corrfac;
0080 std::cout << "corrected rec instlumi " << correctedinstRecLumi << std::endl;
0081 } catch (const edm::eventsetup::NoRecordException<LumiCorrectionParamRcd>& er) {
0082 std::cout << "no data found" << std::endl;
0083 } catch (const cms::Exception& ee) {
0084 std::cout << ee.what() << std::endl;
0085 }
0086 }
0087
0088 DEFINE_FWK_MODULE(TestLumiCorrectionSource);