1 #define SiStripMonitorHardware_BuildEventMatchingCode
2 #ifdef SiStripMonitorHardware_BuildEventMatchingCode
4 #ifndef DQM_SiStripMonitorHardware_SiStripSpyEventMatcher_H
5 #define DQM_SiStripMonitorHardware_SiStripSpyEventMatcher_H
11 #include "boost/cstdint.hpp"
12 #include "boost/shared_ptr.hpp"
22 template<
class T>
class DetSetVector;
23 template<
class T>
class DetSet;
37 std::auto_ptr< FEDRawDataCollection >
rawData;
41 std::auto_ptr< edm::DetSetVector<SiStripRawDigi> >
scopeDigis;
48 std::vector<uint32_t>& theTotalEventCounters,
49 std::vector<uint32_t>& theL1ACounters,
50 std::vector<uint32_t>& theAPVAddresses,
112 Counters::const_iterator
begin()
const {
return pConst->begin(); }
113 Counters::const_iterator
end()
const {
return pConst->end(); }
130 static void findMatchingFeds(
const uint32_t eventId,
const uint8_t apvAddress,
134 std::set<uint16_t>& matchingFeds);
145 std::vector<uint32_t>& outputTotalEventCounters,
146 std::vector<uint32_t>& outputL1ACounters,
147 std::vector<uint32_t>& outputAPVAddresses,
165 std::unique_ptr<edm::VectorInputSource>
const source_;
178 const std::shared_ptr< const edm::Wrapper<T> > productWrapper = edm::getProductByTag<T>(
event,
tag,
nullptr);
179 if (productWrapper) {
180 return productWrapper->product();
193 #endif //ndef DQM_SiStripMonitorHardware_SiStripSpyEventMatcher_H
195 #endif //SiStripMonitorHardware_BuildEventMatchingCode
CountersWrapper(const Counters *theCounters)
edm::VectorInputSource Source
edm::InputTag virginRawDigisTag_
static void findMatchingFeds(const uint32_t eventId, const uint8_t apvAddress, CountersPtr totalEventCounters, CountersPtr l1aCounters, CountersPtr apvAddresses, std::set< uint16_t > &matchingFeds)
void operator()(const edm::EventPrincipal &event)
std::auto_ptr< std::vector< uint32_t > > apvAddresses
static const char * mlLabel_
static const T * getProduct(const edm::EventPrincipal &event, const edm::InputTag &tag)
std::vector< uint32_t > Counters
boost::shared_ptr< CountersWrapper > CountersPtr
edm::InputTag rawDataTag_
edm::InputTag payloadDigisTag_
std::unique_ptr< edm::EventPrincipal > eventPrincipal_
std::set< uint16_t > alreadyMergedFeds_
std::vector< uint32_t > outputL1ACounters_
const Counters::value_type operator[](const size_t i) const
void getCollections(const edm::EventPrincipal &event, const uint32_t eventId, const uint8_t apvAddress, const SiStripFedCabling &cabling, MatchingOutput &matchingOutput)
static CountersPtr getCounters(const edm::EventPrincipal &event, const edm::InputTag &tag, const bool mapKeyIsByFedID=true)
FEDRawDataCollection & outputRawData_
std::unique_ptr< edm::ProcessConfiguration > processConfiguration_
void getMatchedCollections(const uint32_t eventId, const uint8_t apvAddress, const SpyEventList *matchingEvents, const SiStripFedCabling &cabling, SpyDataCollections &collectionsToCreate)
edm::InputTag apvAddressesTag_
edm::InputTag scopeDigisTag_
std::auto_ptr< std::vector< uint32_t > > l1aCounters
std::auto_ptr< std::vector< uint32_t > > totalEventCounters
SpyDataCollections & operator=(SpyDataCollections original)
Counters::const_iterator end() const
boost::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputReorderedDigisVector_
std::vector< uint32_t > outputAPVAddresses_
boost::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputScopeDigisVector_
std::auto_ptr< edm::DetSetVector< SiStripRawDigi > > reorderedDigis
edm::InputTag l1aCountersTag_
std::unique_ptr< Source > constructSource(const edm::ParameterSet &sourceConfig)
boost::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputPayloadDigisVector_
std::set< EventID > SpyEventList
std::shared_ptr< edm::ProductRegistry > productRegistry_
virtual ~SpyEventMatcher()
bool operator<(const EventKey &rhs) const
std::auto_ptr< edm::DetSetVector< SiStripRawDigi > > payloadDigis
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
Container::value_type value_type
MatchingOutput(FEDRawDataCollection &outputRawData)
std::unique_ptr< edm::VectorInputSource > const source_
edm::InputTag totalEventCountersTag_
const SpyEventList * matchesForEvent(const uint32_t eventId, const uint8_t apvAddress) const
EventKey(const uint32_t eventId, const uint8_t apvAddress)
std::auto_ptr< edm::DetSetVector< SiStripRawDigi > > scopeDigis
std::auto_ptr< FEDRawDataCollection > rawData
std::vector< uint32_t > outputTotalEventCounters_
edm::InputTag reorderedDigisTag_
Counters::const_iterator begin() const
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
boost::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputVirginRawDigisVector_
std::auto_ptr< edm::DetSetVector< SiStripRawDigi > > virginRawDigis
void addNextEventToMap(const edm::EventPrincipal &nextSpyEvent)
const Counters::value_type at(const size_t i) const
static void mergeMatchingData(const std::set< uint16_t > &matchingFeds, const FEDRawDataCollection &inputRawData, CountersPtr inputTotalEventCounters, CountersPtr inputL1ACounters, CountersPtr inputAPVAddresses, const edm::DetSetVector< SiStripRawDigi > *inputScopeDigis, const edm::DetSetVector< SiStripRawDigi > *inputPayloadDigis, const edm::DetSetVector< SiStripRawDigi > *inputReorderedDigis, const edm::DetSetVector< SiStripRawDigi > *inputVirginRawDigis, FEDRawDataCollection &outputRawData, std::vector< uint32_t > &outputTotalEventCounters, std::vector< uint32_t > &outputL1ACounters, std::vector< uint32_t > &outputAPVAddresses, std::vector< edm::DetSet< SiStripRawDigi > > *outputScopeDigisVector, std::vector< edm::DetSet< SiStripRawDigi > > *outputPayloadDigisVector, std::vector< edm::DetSet< SiStripRawDigi > > *outputReorderedDigisVector, std::vector< edm::DetSet< SiStripRawDigi > > *outputVirginRawDigisVector, const SiStripFedCabling &cabling)
uint8_t apvAddress() const
SpyEventMatcher(const edm::ParameterSet &config)
A Digi for the silicon strip detector, containing only adc information, and suitable for storing raw ...
std::map< EventKey, SpyEventList > eventMatches_