5 #include "boost/cstdint.hpp"
64 productLabel_(pset.getParameter<edm::InputTag>(
"InputProductLabel")),
65 storeAPVAddress_(pset.getParameter<bool>(
"StoreAPVAddress")),
66 storePayloadDigis_(pset.getParameter<bool>(
"StorePayloadDigis")),
67 storeReorderedDigis_(pset.getParameter<bool>(
"StoreReorderedDigis")),
68 storeModuleDigis_(pset.getParameter<bool>(
"StoreModuleDigis")),
69 discardDigisWithAPVAddressError_(pset.getParameter<bool>(
"DiscardDigisWithWrongAPVAddress")),
70 expectedHeaderBit_(pset.getParameter<uint32_t>(
"ExpectedPositionOfFirstHeaderBit"))
75 <<
"[sistrip::SpyDigiConverterModule::" << __func__ <<
"]"
76 <<
" Constructing object...";
81 if (
storeModuleDigis_) produces< edm::DetSetVector<SiStripRawDigi> >(
"VirginRaw");
84 produces< std::vector<uint32_t> >(
"APVAddress");
103 <<
"[sistrip::SpyDigiConverterModule::" << __func__ <<
"]"
104 <<
" Destructing object...";
116 static bool lFirstEvent =
true;
127 std::auto_ptr< std::vector<uint32_t> > pAPVAddresses(
new std::vector<uint32_t>);
129 std::auto_ptr<sistrip::SpyDigiConverter::DSVRawDigis> payloadDigis, reorderedDigis, moduleDigis;
134 uint16_t lFirstHeaderBit;
138 edm::LogWarning(
"") <<
" -- Majority position for firstHeaderBit in first event ("
140 <<
") is not where expected: "
171 event.put(pAPVAddresses,
"APVAddress");
T getParameter(std::string const &) const
virtual void produce(edm::Event &, const edm::EventSetup &) override
sistrip::SpyDigiConverterModule SiStripSpyDigiConverterModule
const bool discardDigisWithAPVAddressError_
#define DEFINE_FWK_MODULE(type)
static std::auto_ptr< DSVRawDigis > mergeModuleChannels(const DSVRawDigis *inputPhysicalOrderChannelDigis, const SiStripFedCabling &cabling)
const edm::InputTag productLabel_
edm::EDGetTokenT< sistrip::SpyDigiConverter::DSVRawDigis > productToken_
~SpyDigiConverterModule()
static std::auto_ptr< DSVRawDigis > extractPayloadDigis(const DSVRawDigis *inputScopeDigis, std::vector< uint32_t > *pAPVAddresses, const bool discardDigisWithAPVAddrErr, const sistrip::SpyUtilities::FrameQuality &aQuality, const uint16_t expectedPos)
Extract frames from the scope digis.
static std::auto_ptr< DSVRawDigis > reorderDigis(const DSVRawDigis *inputPayloadDigis)
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
const bool storeAPVAddress_
True = store APVE address for each channel.
const bool storeModuleDigis_
const bool storePayloadDigis_
const SiStripFedCabling * getCabling(const edm::EventSetup &)
Updates the cabling object from the DB.
T const * product() const
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
sistrip::SpyUtilities::FrameQuality frameQuality_
const uint32_t expectedHeaderBit_
static void getMajorityHeader(const edm::DetSetVector< SiStripRawDigi > *aInputDigis, uint16_t &firstHeaderBit, bool printResult=true)
const bool storeReorderedDigis_
SpyDigiConverterModule(const edm::ParameterSet &)
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
A plug-in module that takes the spy channel scope mode digis as input from the Event and creates EDPr...