19 #ifndef PHASE2GMT_SAMUONPRODUCER 20 #define PHASE2GMT_SAMUONPRODUCER 58 void endStream()
override;
72 produces<std::vector<l1t::SAMuon> >(
"promptSAMuons").setBranchAlias(
"prompt");
73 produces<std::vector<l1t::SAMuon> >(
"displacedSAMuons").setBranchAlias(
"displaced");
87 std::vector<SAMuon> prompt;
100 if (
abs(
mu.hwDXY()) > 0)
107 std::sort(prompt.begin(), prompt.end(), std::greater<>());
119 std::unique_ptr<std::vector<l1t::SAMuon> > prompt_ptr = std::make_unique<std::vector<l1t::SAMuon> >(prompt);
120 std::unique_ptr<std::vector<l1t::SAMuon> > displaced_ptr = std::make_unique<std::vector<l1t::SAMuon> >(
displaced);
130 ap_uint<BITSSAQUALITY> qual =
mu.hwQual();
131 int charge =
mu.charge() > 0 ? 0 : 1;
133 ap_uint<BITSPT>
pt = round(
mu.pt() /
LSBpt);
138 ap_int<BITSSAZ0>
z0 = 0;
140 ap_int<BITSSAD0>
d0 =
mu.hwDXY();
144 bstart = wordconcat<wordtype>(
word, bstart,
pt > 0, 1);
150 bstart = wordconcat<wordtype>(
word, bstart,
charge, 1);
172 desc.add<
unsigned int>(
"Nprompt", 12);
173 desc.add<
unsigned int>(
"Ndisplaced", 12);
174 descriptions.
add(
"standaloneMuons",
desc);
edm::EDGetTokenT< BXVector< l1t::Muon > > muonToken_
void setWord(uint64_t word)
void endStream() override
void beginStream(edm::StreamID) override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Abs< T >::type abs(const T &t)
#define DEFINE_FWK_MODULE(type)
void produce(edm::Event &, const edm::EventSetup &) override
static constexpr float d0
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
l1t::SAMuon Convertl1tMuon(const l1t::Muon &mu, const int bx_)
Phase2L1TGMTSAMuonProducer(const edm::ParameterSet &)