1616#include " L1Trigger/DemonstratorTools/interface/utilities.h"
1717
1818#include " FWCore/Utilities/interface/EDGetToken.h"
19+ #include " FWCore/Utilities/interface/EDMException.h"
1920
2021#include " DataFormats/L1Trigger/interface/P2GTAlgoBlock.h"
2122
2425#include < vector>
2526#include < algorithm>
2627#include < string>
28+ #include < array>
2729
2830using namespace l1t ;
2931
@@ -49,19 +51,33 @@ class L1GTAlgoBoardWriter : public edm::one::EDAnalyzer<> {
4951 std::size_t tmuxCounter_;
5052};
5153
54+ template <typename T, std::size_t N>
55+ static std::array<T, N> convert (std::vector<T> vec, const char * name) {
56+ if (vec.size () != N) {
57+ throw edm::Exception (edm::errors::Configuration)
58+ << " The parameter '" << name << " ' should have " << N << " elements, but has " << vec.size ()
59+ << " elements in the configuration.\n " ;
60+ }
61+ std::array<T, N> a;
62+ std::copy_n (std::make_move_iterator (vec.begin ()), N, a.begin ());
63+ return a;
64+ }
65+
5266L1GTAlgoBoardWriter::L1GTAlgoBoardWriter (const edm::ParameterSet& config)
5367 : eventCounter_(0 ),
54- maxEvents_(config.getParameter<unsigned int >(" maxEvents" )),
55- channels_(config.getParameter<std::array<unsigned int , 2 >>(" channels" )),
56- algoBitMask_(config.getParameter<std::array<unsigned long long , 9 >>(" algoBitMask" )),
57- algoBlocksToken_(consumes<P2GTAlgoBlockMap>(config.getParameter<edm::InputTag>(" algoBlocksTag" ))),
68+ maxEvents_(config.getUntrackedParameter<unsigned int >(" maxEvents" )),
69+ channels_(
70+ convert<unsigned int , 2 >(config.getUntrackedParameter<std::vector<unsigned int >>(" channels" ), "channels")),
71+ algoBitMask_(convert<unsigned long long , 9 >(
72+ config.getUntrackedParameter<std::vector<unsigned long long >>(" algoBitMask" ), "algoBitMask")),
73+ algoBlocksToken_(consumes<P2GTAlgoBlockMap>(config.getUntrackedParameter<edm::InputTag>(" algoBlocksTag" ))),
5874 boardDataWriter_(
59- l1t::demo::parseFileFormat (config.getParameter <std::string>(" patternFormat" )),
60- config.getParameter <std::string>(" outputFilename" ),
61- config.getParameter <std::string>(" outputFileExtension" ),
75+ l1t::demo::parseFileFormat (config.getUntrackedParameter <std::string>(" patternFormat" )),
76+ config.getUntrackedParameter <std::string>(" outputFilename" ),
77+ config.getUntrackedParameter <std::string>(" outputFileExtension" ),
6278 9,
6379 2,
64- config.getParameter <unsigned int>(" maxFrames" ),
80+ config.getUntrackedParameter <unsigned int>(" maxFrames" ),
6581 [](const std::array<unsigned int , 2 >& channels) {
6682 l1t::demo::BoardDataWriter::ChannelMap_t channelMap;
6783 for (unsigned int channel : channels) {
@@ -117,23 +133,23 @@ void L1GTAlgoBoardWriter::endJob() {
117133
118134void L1GTAlgoBoardWriter::fillDescriptions (edm::ConfigurationDescriptions& descriptions) {
119135 edm::ParameterSetDescription desc;
120- desc.add <std::string>(" outputFilename" );
121- desc.add <std::string>(" outputFileExtension" , " txt" );
122- desc.add <edm::InputTag>(" algoBlocksTag" );
123- desc.add <unsigned int >(" maxEvents" , 0 );
124- desc.add <std::vector<unsigned int >>(" channels" );
125- desc.add <std::vector<unsigned long long >>(" algoBitMask" ,
126- {0xffffffffffffffffull ,
127- 0xffffffffffffffffull ,
128- 0xffffffffffffffffull ,
129- 0xffffffffffffffffull ,
130- 0xffffffffffffffffull ,
131- 0xffffffffffffffffull ,
132- 0xffffffffffffffffull ,
133- 0xffffffffffffffffull ,
134- 0xffffffffffffffffull });
135- desc.add <unsigned int >(" maxFrames" , 1024 );
136- desc.add <std::string>(" patternFormat" , " EMPv2" );
136+ desc.addUntracked <std::string>(" outputFilename" );
137+ desc.addUntracked <std::string>(" outputFileExtension" , " txt" );
138+ desc.addUntracked <edm::InputTag>(" algoBlocksTag" );
139+ desc.addUntracked <unsigned int >(" maxEvents" , 0 );
140+ desc.addUntracked <std::vector<unsigned int >>(" channels" );
141+ desc.addUntracked <std::vector<unsigned long long >>(" algoBitMask" ,
142+ {0xffffffffffffffffull ,
143+ 0xffffffffffffffffull ,
144+ 0xffffffffffffffffull ,
145+ 0xffffffffffffffffull ,
146+ 0xffffffffffffffffull ,
147+ 0xffffffffffffffffull ,
148+ 0xffffffffffffffffull ,
149+ 0xffffffffffffffffull ,
150+ 0xffffffffffffffffull });
151+ desc.addUntracked <unsigned int >(" maxFrames" , 1024 );
152+ desc.addUntracked <std::string>(" patternFormat" , " EMPv2" );
137153
138154 descriptions.addDefault (desc);
139155}
0 commit comments