4 #ifdef SiStripMonitorHardware_BuildEventMatchingCode 42 uint8_t& apvAddress)
const;
43 void copyData(
const uint32_t eventId,
44 const uint8_t apvAddress,
68 : filterNonMatchingEvents_(
config.getParameter<
bool>(
"FilterNonMatchingEvents")),
69 doMerge_(
config.getParameter<
bool>(
"MergeData")),
70 primaryStreamRawDataTag_(
config.getParameter<
edm::
InputTag>(
"PrimaryEventRawDataTag")),
76 produces<FEDRawDataCollection>(
"RawSpyData");
77 produces<std::vector<uint32_t> >(
"SpyTotalEventCount");
78 produces<std::vector<uint32_t> >(
"SpyL1ACount");
79 produces<std::vector<uint32_t> >(
"SpyAPVAddress");
80 produces<edm::DetSetVector<SiStripRawDigi> >(
"SpyScope");
81 produces<edm::DetSetVector<SiStripRawDigi> >(
"SpyPayload");
82 produces<edm::DetSetVector<SiStripRawDigi> >(
"SpyReordered");
83 produces<edm::DetSetVector<SiStripRawDigi> >(
"SpyVirginRaw");
97 uint8_t apvAddress = 0;
119 uint8_t& apvAddress)
const {
123 for (
auto iFedId = cabling.
fedIds().begin(); iFedId != cabling.
fedIds().end(); ++iFedId) {
128 <<
". Exception was: An exception of category 'FEDBuffer' occurred.\n" 129 << st_buffer <<
" (see debug output for details)";
133 const auto st_chan =
buffer.findChannels();
135 LogDebug(
messageLabel_) <<
"Failed to build FED buffer for FED ID " << *iFedId <<
". Exception was " << st_chan
136 <<
" (see above for more details)";
139 if (!
buffer.doChecks(
true)) {
143 l1ID =
buffer.daqLvl1ID();
144 apvAddress =
buffer.trackerSpecialHeader().apveAddress();
145 if (apvAddress != 0) {
153 for (
auto iConn = connections.begin(); iConn != connections.end(); ++iConn) {
154 if (!iConn->isConnected()) {
157 if (!
buffer.channelGood(iConn->fedCh(),
true)) {
171 const uint8_t apvAddress,
177 if (matchedCollections.
rawData.get())
202 #endif //SiStripMonitorHardware_BuildEventMatchingCode
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > payloadDigis
SpyEventMatcherModule(const edm::ParameterSet &config)
static const char *const messageLabel_
Log< level::Error, false > LogError
void findL1IDandAPVAddress(const edm::Event &event, const SiStripFedCabling &cabling, uint32_t &l1ID, uint8_t &apvAddress) const
~SpyEventMatcherModule() override
PRODUCT const & get(ESGetToken< PRODUCT, T > const &iToken) const
edm::EDGetTokenT< FEDRawDataCollection > primaryStreamRawDataToken_
std::unique_ptr< FEDRawDataCollection > rawData
bool filter(edm::Event &event, const edm::EventSetup &eventSetup) override
std::unique_ptr< std::vector< uint32_t > > totalEventCounters
std::set< EventID > SpyEventList
std::unique_ptr< SpyEventMatcher > spyEventMatcher_
#define DEFINE_FWK_MODULE(type)
std::unique_ptr< std::vector< uint32_t > > apvAddresses
const SiStripFedCabling * fedCabling_
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > scopeDigis
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > reorderedDigis
Log< level::Info, false > LogInfo
static const uint16_t FEDCH_PER_FEUNIT
edm::ESWatcher< SiStripFedCablingRcd > cablingWatcher_
const bool filterNonMatchingEvents_
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
bool check(const edm::EventSetup &iSetup)
char data[epos_bytes_allocation]
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > virginRawDigis
std::unique_ptr< std::vector< uint32_t > > l1aCounters
void updateFedCabling(const SiStripFedCablingRcd &rcd)
FEDBufferStatusCode preconstructCheckFEDBuffer(const FEDRawData &fedBuffer, bool allowBadBuffer=false)
void copyData(const uint32_t eventId, const uint8_t apvAddress, const SpyEventMatcher::SpyEventList *matches, edm::Event &event, const SiStripFedCabling &cabling) const
void beginStream(edm::StreamID) override
FedsConstIterRange fedIds() const
const edm::InputTag primaryStreamRawDataTag_
ConnsConstIterRange fedConnections(uint16_t fed_id) const
sistrip::SpyEventMatcherModule SiStripSpyEventMatcherModule
edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcd > fedCablingToken_