Go to the documentation of this file.00001
00017
00018 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtPsbSetupTrivialProducer.h"
00019
00020
00021 #include <memory>
00022 #include "boost/shared_ptr.hpp"
00023
00024 #include <vector>
00025
00026
00027 #include "FWCore/Utilities/interface/EDMException.h"
00028
00029 #include "FWCore/Framework/interface/ModuleFactory.h"
00030 #include "FWCore/Framework/interface/ESHandle.h"
00031
00032 #include "CondFormats/DataRecord/interface/L1GtPsbSetupRcd.h"
00033
00034
00035
00036
00037
00038
00039
00040 L1GtPsbSetupTrivialProducer::L1GtPsbSetupTrivialProducer(
00041 const edm::ParameterSet& parSet)
00042 {
00043
00044 setWhatProduced(this, &L1GtPsbSetupTrivialProducer::producePsbSetup);
00045
00046
00047
00048
00049 std::vector<edm::ParameterSet> psbSetup = parSet.getParameter<std::vector<
00050 edm::ParameterSet> > ("PsbSetup");
00051
00052
00053 m_gtPsbSetup.reserve(psbSetup.size());
00054
00055 std::vector<unsigned int> enableRecLvdsInt;
00056 enableRecLvdsInt.reserve(L1GtPsbConfig::PsbNumberLvdsGroups);
00057 std::vector<bool> enableRecLvds;
00058 enableRecLvds.reserve(L1GtPsbConfig::PsbNumberLvdsGroups);
00059
00060 std::vector<unsigned int> enableRecSerLinkInt;
00061 enableRecSerLinkInt.reserve(L1GtPsbConfig::PsbSerLinkNumberChannels);
00062 std::vector<bool> enableRecSerLink;
00063 enableRecSerLink.reserve(L1GtPsbConfig::PsbSerLinkNumberChannels);
00064
00065 for (std::vector<edm::ParameterSet>::const_iterator itPSet =
00066 psbSetup.begin(); itPSet != psbSetup.end(); ++itPSet) {
00067
00068
00069 L1GtPsbConfig psbConfig(itPSet->getParameter<int> ("Slot"));
00070
00071 psbConfig.setGtPsbCh0SendLvds(
00072 itPSet->getParameter<bool> ("Ch0SendLvds"));
00073 psbConfig.setGtPsbCh1SendLvds(
00074 itPSet->getParameter<bool> ("Ch1SendLvds"));
00075
00076 enableRecLvdsInt = itPSet->getParameter<std::vector<unsigned int> > (
00077 "EnableRecLvds");
00078
00079 for (std::vector<unsigned int>::const_iterator cIt =
00080 enableRecLvdsInt.begin(); cIt != enableRecLvdsInt.end(); ++cIt) {
00081 bool val = *cIt;
00082 enableRecLvds.push_back(val);
00083 }
00084
00085 psbConfig.setGtPsbEnableRecLvds(enableRecLvds);
00086 enableRecLvds.clear();
00087
00088 enableRecSerLinkInt
00089 = itPSet->getParameter<std::vector<unsigned int> > (
00090 "EnableRecSerLink");
00091
00092 for (std::vector<unsigned int>::const_iterator cIt =
00093 enableRecSerLinkInt.begin(); cIt != enableRecSerLinkInt.end(); ++cIt) {
00094 bool val = *cIt;
00095 enableRecSerLink.push_back(val);
00096 }
00097
00098 psbConfig.setGtPsbEnableRecSerLink(enableRecSerLink);
00099 enableRecSerLink.clear();
00100
00101
00102 m_gtPsbSetup.push_back(psbConfig);
00103
00104 }
00105
00106 }
00107
00108
00109 L1GtPsbSetupTrivialProducer::~L1GtPsbSetupTrivialProducer()
00110 {
00111
00112
00113
00114 }
00115
00116
00117
00118
00119 boost::shared_ptr<L1GtPsbSetup> L1GtPsbSetupTrivialProducer::producePsbSetup(
00120 const L1GtPsbSetupRcd& iRecord)
00121 {
00122
00123 using namespace edm::es;
00124
00125 boost::shared_ptr<L1GtPsbSetup> pL1GtPsbSetup = boost::shared_ptr<
00126 L1GtPsbSetup>(new L1GtPsbSetup());
00127
00128 pL1GtPsbSetup->setGtPsbSetup(m_gtPsbSetup);
00129
00130 return pL1GtPsbSetup;
00131 }
00132