CMS 3D CMS Logo

L1GtPsbSetupTrivialProducer.cc
Go to the documentation of this file.
1 
15 // this class header
17 
18 // system include files
19 #include <memory>
20 
21 #include <vector>
22 
23 // user include files
25 
28 
30 
31 // forward declarations
32 
33 //
34 
35 // constructor(s)
37  // tell the framework what data is being produced
39 
40  // now do what ever other initialization is needed
41 
42  // detailed input configuration for PSB
43  std::vector<edm::ParameterSet> psbSetup = parSet.getParameter<std::vector<edm::ParameterSet> >("PsbSetup");
44 
45  // reserve space for L1 GT boards
46  m_gtPsbSetup.reserve(psbSetup.size());
47 
48  std::vector<unsigned int> enableRecLvdsInt;
49  enableRecLvdsInt.reserve(L1GtPsbConfig::PsbNumberLvdsGroups);
50  std::vector<bool> enableRecLvds;
51  enableRecLvds.reserve(L1GtPsbConfig::PsbNumberLvdsGroups);
52 
53  std::vector<unsigned int> enableRecSerLinkInt;
54  enableRecSerLinkInt.reserve(L1GtPsbConfig::PsbSerLinkNumberChannels);
55  std::vector<bool> enableRecSerLink;
56  enableRecSerLink.reserve(L1GtPsbConfig::PsbSerLinkNumberChannels);
57 
58  for (std::vector<edm::ParameterSet>::const_iterator itPSet = psbSetup.begin(); itPSet != psbSetup.end(); ++itPSet) {
59  //
60  L1GtPsbConfig psbConfig(itPSet->getParameter<int>("Slot"));
61 
62  psbConfig.setGtPsbCh0SendLvds(itPSet->getParameter<bool>("Ch0SendLvds"));
63  psbConfig.setGtPsbCh1SendLvds(itPSet->getParameter<bool>("Ch1SendLvds"));
64 
65  enableRecLvdsInt = itPSet->getParameter<std::vector<unsigned int> >("EnableRecLvds");
66 
67  for (std::vector<unsigned int>::const_iterator cIt = enableRecLvdsInt.begin(); cIt != enableRecLvdsInt.end();
68  ++cIt) {
69  bool val = *cIt;
70  enableRecLvds.push_back(val);
71  }
72 
73  psbConfig.setGtPsbEnableRecLvds(enableRecLvds);
74  enableRecLvds.clear();
75 
76  enableRecSerLinkInt = itPSet->getParameter<std::vector<unsigned int> >("EnableRecSerLink");
77 
78  for (std::vector<unsigned int>::const_iterator cIt = enableRecSerLinkInt.begin(); cIt != enableRecSerLinkInt.end();
79  ++cIt) {
80  bool val = *cIt;
81  enableRecSerLink.push_back(val);
82  }
83 
84  psbConfig.setGtPsbEnableRecSerLink(enableRecSerLink);
85  enableRecSerLink.clear();
86 
87  // push the board in the vector
88  m_gtPsbSetup.push_back(psbConfig);
89  }
90 }
91 
92 // destructor
94  // empty
95 }
96 
97 // member functions
98 
99 // method called to produce the data
100 std::unique_ptr<L1GtPsbSetup> L1GtPsbSetupTrivialProducer::producePsbSetup(const L1GtPsbSetupRcd& iRecord) {
101  auto pL1GtPsbSetup = std::make_unique<L1GtPsbSetup>();
102 
103  pL1GtPsbSetup->setGtPsbSetup(m_gtPsbSetup);
104 
105  return pL1GtPsbSetup;
106 }
T getParameter(std::string const &) const
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:138
~L1GtPsbSetupTrivialProducer() override
destructor
void setGtPsbEnableRecLvds(const std::vector< bool > &)
void setGtPsbCh0SendLvds(const bool &)
static const int PsbSerLinkNumberChannels
number of channels per board
Definition: L1GtPsbConfig.h:63
std::unique_ptr< L1GtPsbSetup > producePsbSetup(const L1GtPsbSetupRcd &)
public methods
static const int PsbNumberLvdsGroups
number of LVDS groups per board
Definition: L1GtPsbConfig.h:60
void setGtPsbEnableRecSerLink(const std::vector< bool > &)
L1GtPsbSetupTrivialProducer(const edm::ParameterSet &)
constructor
std::vector< L1GtPsbConfig > m_gtPsbSetup
L1 GT PSB boards and their setup.
void setGtPsbCh1SendLvds(const bool &)