1 #define SiStripMonitorHardware_BuildEventMatchingCode 2 #ifdef SiStripMonitorHardware_BuildEventMatchingCode 4 #ifndef DQM_SiStripMonitorHardware_SiStripSpyEventMatcher_H 5 #define DQM_SiStripMonitorHardware_SiStripSpyEventMatcher_H 37 std::unique_ptr<FEDRawDataCollection>
rawData;
41 std::unique_ptr<edm::DetSetVector<SiStripRawDigi> >
scopeDigis;
48 std::vector<uint32_t>& theTotalEventCounters,
49 std::vector<uint32_t>& theL1ACounters,
50 std::vector<uint32_t>& theAPVAddresses,
77 const SpyEventList* matchesForEvent(
const uint32_t eventId,
const uint8_t apvAddress)
const;
79 void getMatchedCollections(
const uint32_t eventId,
80 const uint8_t apvAddress,
81 const SpyEventList* matchingEvents,
86 const uint32_t eventId,
87 const uint8_t apvAddress,
94 EventKey(
const uint32_t eventId,
const uint8_t apvAddress);
95 uint32_t
eventId()
const {
return eventId_; }
113 Counters::const_iterator
begin()
const {
return pConst->begin(); }
114 Counters::const_iterator
end()
const {
return pConst->end(); }
133 const bool mapKeyIsByFedID =
true);
135 static void findMatchingFeds(
const uint32_t eventId,
136 const uint8_t apvAddress,
137 CountersPtr totalEventCounters,
138 CountersPtr l1aCounters,
139 CountersPtr apvAddresses,
140 std::set<uint16_t>& matchingFeds);
141 static void mergeMatchingData(
const std::set<uint16_t>& matchingFeds,
143 CountersPtr inputTotalEventCounters,
144 CountersPtr inputL1ACounters,
145 CountersPtr inputAPVAddresses,
151 std::vector<uint32_t>& outputTotalEventCounters,
152 std::vector<uint32_t>& outputL1ACounters,
153 std::vector<uint32_t>& outputAPVAddresses,
171 std::unique_ptr<edm::VectorInputSource>
const source_;
179 LogDebug(mlLabel_) <<
"Retrieving product " <<
tag;
184 const std::shared_ptr<const edm::Wrapper<T> > productWrapper = edm::getProductByTag<T>(
event,
tag,
nullptr);
185 if (productWrapper) {
186 return productWrapper->product();
193 return ((this->eventId_ < rhs.
eventId_)
195 : (((this->eventId_ == rhs.
eventId_) && (this->apvAddress_ < rhs.
apvAddress_)) ?
true :
false));
200 #endif //ndef DQM_SiStripMonitorHardware_SiStripSpyEventMatcher_H 202 #endif //SiStripMonitorHardware_BuildEventMatchingCode
bool operator<(DetSet< T > const &x, DetSet< T > const &y)
static AlgebraicMatrix initialize()
edm::VectorInputSource Source
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > payloadDigis
edm::InputTag virginRawDigisTag_
std::map< EventKey, SpyEventList > eventMatches_
static const char * mlLabel_
std::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputVirginRawDigisVector_
std::vector< uint32_t > Counters
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
FEDRawDataCollection & outputRawData_
T const * getProduct(RefCore const &ref)
std::unique_ptr< edm::ProcessConfiguration > processConfiguration_
edm::InputTag apvAddressesTag_
edm::InputTag scopeDigisTag_
Counters::const_iterator end() const
std::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputScopeDigisVector_
std::vector< uint32_t > outputAPVAddresses_
edm::InputTag l1aCountersTag_
std::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputReorderedDigisVector_
Container::value_type value_type
std::unique_ptr< FEDRawDataCollection > rawData
std::shared_ptr< CountersWrapper > CountersPtr
std::unique_ptr< std::vector< uint32_t > > totalEventCounters
std::set< EventID > SpyEventList
std::shared_ptr< edm::ProductRegistry > productRegistry_
std::unique_ptr< std::vector< uint32_t > > apvAddresses
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > scopeDigis
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
std::unique_ptr< edm::VectorInputSource > const source_
edm::InputTag totalEventCountersTag_
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > reorderedDigis
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...
bool operator<(DTCELinkId const &lhs, DTCELinkId const &rhs)
std::unique_ptr< edm::DetSetVector< SiStripRawDigi > > virginRawDigis
const Counters::value_type at(const size_t i) const
std::unique_ptr< std::vector< uint32_t > > l1aCounters
uint8_t apvAddress() const
std::shared_ptr< std::vector< edm::DetSet< SiStripRawDigi > > > outputPayloadDigisVector_
A Digi for the silicon strip detector, containing only adc information, and suitable for storing raw ...