File indexing completed on 2023-03-17 11:14:16
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtPsbSetupTrivialProducer.h"
0017
0018
0019 #include <memory>
0020
0021 #include <vector>
0022
0023
0024 #include "FWCore/Utilities/interface/EDMException.h"
0025
0026 #include "FWCore/Framework/interface/ModuleFactory.h"
0027 #include "FWCore/Framework/interface/ESHandle.h"
0028
0029 #include "CondFormats/DataRecord/interface/L1GtPsbSetupRcd.h"
0030
0031
0032
0033
0034
0035
0036 L1GtPsbSetupTrivialProducer::L1GtPsbSetupTrivialProducer(const edm::ParameterSet& parSet) {
0037
0038 setWhatProduced(this, &L1GtPsbSetupTrivialProducer::producePsbSetup);
0039
0040
0041
0042
0043 std::vector<edm::ParameterSet> psbSetup = parSet.getParameter<std::vector<edm::ParameterSet> >("PsbSetup");
0044
0045
0046 m_gtPsbSetup.reserve(psbSetup.size());
0047
0048 std::vector<unsigned int> enableRecLvdsInt;
0049 enableRecLvdsInt.reserve(L1GtPsbConfig::PsbNumberLvdsGroups);
0050 std::vector<bool> enableRecLvds;
0051 enableRecLvds.reserve(L1GtPsbConfig::PsbNumberLvdsGroups);
0052
0053 std::vector<unsigned int> enableRecSerLinkInt;
0054 enableRecSerLinkInt.reserve(L1GtPsbConfig::PsbSerLinkNumberChannels);
0055 std::vector<bool> enableRecSerLink;
0056 enableRecSerLink.reserve(L1GtPsbConfig::PsbSerLinkNumberChannels);
0057
0058 for (std::vector<edm::ParameterSet>::const_iterator itPSet = psbSetup.begin(); itPSet != psbSetup.end(); ++itPSet) {
0059
0060 L1GtPsbConfig psbConfig(itPSet->getParameter<int>("Slot"));
0061
0062 psbConfig.setGtPsbCh0SendLvds(itPSet->getParameter<bool>("Ch0SendLvds"));
0063 psbConfig.setGtPsbCh1SendLvds(itPSet->getParameter<bool>("Ch1SendLvds"));
0064
0065 enableRecLvdsInt = itPSet->getParameter<std::vector<unsigned int> >("EnableRecLvds");
0066
0067 for (std::vector<unsigned int>::const_iterator cIt = enableRecLvdsInt.begin(); cIt != enableRecLvdsInt.end();
0068 ++cIt) {
0069 bool val = *cIt;
0070 enableRecLvds.push_back(val);
0071 }
0072
0073 psbConfig.setGtPsbEnableRecLvds(enableRecLvds);
0074 enableRecLvds.clear();
0075
0076 enableRecSerLinkInt = itPSet->getParameter<std::vector<unsigned int> >("EnableRecSerLink");
0077
0078 for (std::vector<unsigned int>::const_iterator cIt = enableRecSerLinkInt.begin(); cIt != enableRecSerLinkInt.end();
0079 ++cIt) {
0080 bool val = *cIt;
0081 enableRecSerLink.push_back(val);
0082 }
0083
0084 psbConfig.setGtPsbEnableRecSerLink(enableRecSerLink);
0085 enableRecSerLink.clear();
0086
0087
0088 m_gtPsbSetup.push_back(psbConfig);
0089 }
0090 }
0091
0092
0093 L1GtPsbSetupTrivialProducer::~L1GtPsbSetupTrivialProducer() {
0094
0095 }
0096
0097
0098
0099
0100 std::unique_ptr<L1GtPsbSetup> L1GtPsbSetupTrivialProducer::producePsbSetup(const L1GtPsbSetupRcd& iRecord) {
0101 auto pL1GtPsbSetup = std::make_unique<L1GtPsbSetup>();
0102
0103 pL1GtPsbSetup->setGtPsbSetup(m_gtPsbSetup);
0104
0105 return pL1GtPsbSetup;
0106 }