File indexing completed on 2024-04-06 12:22:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "FWCore/Framework/interface/ESHandle.h"
0023 #include "L1TriggerConfig/L1ScalesProducers/interface/L1CaloInputScalesProducer.h"
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040 L1CaloInputScalesProducer::L1CaloInputScalesProducer(const edm::ParameterSet& iConfig) {
0041
0042
0043 setWhatProduced(this, &L1CaloInputScalesProducer::produceEcalScale);
0044 setWhatProduced(this, &L1CaloInputScalesProducer::produceHcalScale);
0045
0046
0047
0048
0049 m_ecalEtThresholdsPosEta = iConfig.getParameter<std::vector<double> >("L1EcalEtThresholdsPositiveEta");
0050 m_ecalEtThresholdsNegEta = iConfig.getParameter<std::vector<double> >("L1EcalEtThresholdsNegativeEta");
0051 m_hcalEtThresholdsPosEta = iConfig.getParameter<std::vector<double> >("L1HcalEtThresholdsPositiveEta");
0052 m_hcalEtThresholdsNegEta = iConfig.getParameter<std::vector<double> >("L1HcalEtThresholdsNegativeEta");
0053 }
0054
0055 L1CaloInputScalesProducer::~L1CaloInputScalesProducer() {
0056
0057
0058 }
0059
0060
0061
0062
0063
0064
0065 std::unique_ptr<L1CaloEcalScale> L1CaloInputScalesProducer::produceEcalScale(const L1CaloEcalScaleRcd& iRecord) {
0066 auto pL1CaloEcalScale = std::make_unique<L1CaloEcalScale>();
0067
0068 std::vector<double>::const_iterator posItr = m_ecalEtThresholdsPosEta.begin();
0069 std::vector<double>::const_iterator negItr = m_ecalEtThresholdsNegEta.begin();
0070
0071 for (unsigned short ieta = 1; ieta <= L1CaloEcalScale::nBinEta; ++ieta) {
0072 for (unsigned short irank = 0; irank < L1CaloEcalScale::nBinRank; ++irank) {
0073 pL1CaloEcalScale->setBin(irank, ieta, 1, *posItr);
0074 pL1CaloEcalScale->setBin(irank, ieta, -1, *negItr);
0075
0076 ++posItr;
0077 ++negItr;
0078 }
0079 }
0080
0081 return pL1CaloEcalScale;
0082 }
0083
0084
0085 std::unique_ptr<L1CaloHcalScale> L1CaloInputScalesProducer::produceHcalScale(const L1CaloHcalScaleRcd& iRecord) {
0086 auto pL1CaloHcalScale = std::make_unique<L1CaloHcalScale>();
0087
0088 std::vector<double>::const_iterator posItr = m_hcalEtThresholdsPosEta.begin();
0089
0090 std::vector<double>::const_iterator negItr = m_hcalEtThresholdsNegEta.begin();
0091
0092 for (unsigned short ieta = 1; ieta <= L1CaloHcalScale::nBinEta; ++ieta) {
0093 for (unsigned short irank = 0; irank < L1CaloHcalScale::nBinRank; ++irank) {
0094 pL1CaloHcalScale->setBin(irank, ieta, 1, *posItr);
0095 pL1CaloHcalScale->setBin(irank, ieta, -1, *negItr);
0096
0097 ++posItr;
0098 ++negItr;
0099 }
0100 }
0101
0102 return pL1CaloHcalScale;
0103 }
0104
0105
0106