CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripSpyMonitorModule Class Reference
Inheritance diagram for SiStripSpyMonitorModule:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 SiStripSpyMonitorModule (const edm::ParameterSet &)
 
 ~SiStripSpyMonitorModule () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (const edm::Run &, const edm::EventSetup &) override
 
edm::DetSetVector< SiStripRawDigi >::detset::const_iterator findTwoConsecutive (const edm::DetSetVector< SiStripRawDigi >::detset &channelDigis, const uint16_t threshold, uint16_t &aCounter)
 
bool hasNegativePedSubtr (const edm::DetSetVector< SiStripRawDigi >::detset &channelDigis, uint16_t aPair)
 
bool identifyTickmarks (const edm::DetSetVector< SiStripRawDigi >::detset &channelDigis, const uint16_t threshold)
 

Private Attributes

edm::EventNumber_t evt_
 
bool fillAllDetailedHistograms_
 
bool fillWithEvtNum_
 
bool fillWithLocalEvtNum_
 
uint16_t firstHeaderBit_
 
uint16_t firstTrailerBit_
 
std::string folderName_
 
sistrip::SpyUtilities::FrameQuality frameQuality_
 
SPYHistograms histManager_
 
uint32_t maxDigiRange_
 
uint32_t maxDigitalHigh_
 
uint32_t maxDigitalLow_
 
uint32_t minDigiRange_
 
uint32_t minDigitalHigh_
 
uint32_t minDigitalLow_
 
std::ofstream outfile_ [20]
 
std::map< std::string, unsigned int > outfileMap_
 
std::vector< std::string > outfileNames_
 
edm::InputTag spyAPVeTag_
 
edm::EDGetTokenT< std::vector< uint32_t > > spyAPVeToken_
 
edm::InputTag spyL1Tag_
 
edm::EDGetTokenT< std::vector< uint32_t > > spyL1Token_
 
edm::InputTag spyPedSubtrDigisTag_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > spyPedSubtrDigisToken_
 
edm::InputTag spyScopeRawDigisTag_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > spyScopeRawDigisToken_
 
edm::InputTag spyTotCountTag_
 
edm::EDGetTokenT< std::vector< uint32_t > > spyTotCountToken_
 
sistrip::SpyUtilities utility_
 
bool writeCabling_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 51 of file SiStripSpyMonitorModule.cc.

Constructor & Destructor Documentation

SiStripSpyMonitorModule::SiStripSpyMonitorModule ( const edm::ParameterSet iConfig)
explicit

Definition at line 137 of file SiStripSpyMonitorModule.cc.

References evt_, frameQuality_, edm::ParameterSet::getUntrackedParameter(), histManager_, mps_fire::i, SPYHistograms::initialise(), simpleEdmComparison::lName, sistrip::SpyUtilities::FrameQuality::maxDigiRange, sistrip::SpyUtilities::FrameQuality::maxTickHeight, sistrip::SpyUtilities::FrameQuality::maxZeroLight, sistrip::SpyUtilities::FrameQuality::minDigiRange, sistrip::SpyUtilities::FrameQuality::minTickHeight, sistrip::SpyUtilities::FrameQuality::minZeroLight, cmsBatch::nFiles, MillePedeFileConverter_cfg::out, outfile_, outfileMap_, outfileNames_, spyAPVeTag_, spyAPVeToken_, spyL1Tag_, spyL1Token_, spyPedSubtrDigisTag_, spyPedSubtrDigisToken_, spyScopeRawDigisTag_, spyScopeRawDigisToken_, spyTotCountTag_, and spyTotCountToken_.

138  : spyScopeRawDigisTag_(iConfig.getUntrackedParameter<edm::InputTag>("SpyScopeRawDigisTag",edm::InputTag("SiStripSpyUnpacker","ScopeRawDigis"))),
139  spyPedSubtrDigisTag_(iConfig.getUntrackedParameter<edm::InputTag>("SpyPedSubtrDigisTag",edm::InputTag("SiStripFEDEmulator",""))),
140  spyL1Tag_(iConfig.getUntrackedParameter<edm::InputTag>("SpyL1Tag",edm::InputTag("SiStripSpyDigiConverter","L1ACount"))),
141  spyTotCountTag_(iConfig.getUntrackedParameter<edm::InputTag>("SpyTotalEventCountTag",edm::InputTag("SiStripSpyDigiConverter","TotalEventCount"))),
142  spyAPVeTag_(iConfig.getUntrackedParameter<edm::InputTag>("SpyAPVeTag",edm::InputTag("SiStripSpyDigiConverter","APVAddress"))),
143  folderName_(iConfig.getUntrackedParameter<std::string>("HistogramFolderName","SiStrip/ReadoutView/SpyMonitoringSummary")),
144  fillAllDetailedHistograms_(iConfig.getUntrackedParameter<bool>("FillAllDetailedHistograms",false)),
145  fillWithEvtNum_(iConfig.getUntrackedParameter<bool>("FillWithEventNumber",false)),
146  fillWithLocalEvtNum_(iConfig.getUntrackedParameter<bool>("FillWithLocalEventNumber",false)),
147  firstHeaderBit_(0),
148  firstTrailerBit_(0),
149  outfileNames_(iConfig.getUntrackedParameter<std::vector<std::string> >("OutputErrors")),
150  writeCabling_(iConfig.getUntrackedParameter<bool>("WriteCabling",false))
151 {
152 
153  spyScopeRawDigisToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(spyScopeRawDigisTag_);
154  spyPedSubtrDigisToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(spyPedSubtrDigisTag_);
155 
156  spyL1Token_ = consumes<std::vector<uint32_t> >(spyL1Tag_);
157  spyTotCountToken_ = consumes<std::vector<uint32_t> >(spyTotCountTag_);
158  spyAPVeToken_ = consumes<std::vector<uint32_t> >(spyAPVeTag_);
159 
160  evt_ = 0;
161  std::ostringstream pDebugStream;
162  histManager_.initialise(iConfig,&pDebugStream);
163  const unsigned int nFiles = outfileNames_.size();
164 
165  for (unsigned int i(0); i<nFiles; i++){
166  std::ostringstream lName;
167  lName << outfileNames_.at(i) << ".out";
168  if (i<20) outfile_[i].open(lName.str().c_str(),std::ios::out);
169  outfileMap_[outfileNames_.at(i)] = i;
170  }
171 
172  frameQuality_.minDigiRange = static_cast<uint16_t>(iConfig.getUntrackedParameter<uint32_t>("MinDigiRange",100));
173  frameQuality_.maxDigiRange = static_cast<uint16_t>(iConfig.getUntrackedParameter<uint32_t>("MaxDigiRange",1024));
174  frameQuality_.minZeroLight = static_cast<uint16_t>(iConfig.getUntrackedParameter<uint32_t>("MinZeroLight",0));
175  frameQuality_.maxZeroLight = static_cast<uint16_t>(iConfig.getUntrackedParameter<uint32_t>("MaxZeroLight",1024));
176  frameQuality_.minTickHeight = static_cast<uint16_t>(iConfig.getUntrackedParameter<uint32_t>("MinTickHeight",0));
177  frameQuality_.maxTickHeight = static_cast<uint16_t>(iConfig.getUntrackedParameter<uint32_t>("MaxTickHeight",1024));
178 
179 }
T getUntrackedParameter(std::string const &, T const &) const
void initialise(const edm::ParameterSet &iConfig, std::ostringstream *pDebugStream) override
edm::EDGetTokenT< std::vector< uint32_t > > spyAPVeToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > spyPedSubtrDigisToken_
std::map< std::string, unsigned int > outfileMap_
sistrip::SpyUtilities::FrameQuality frameQuality_
std::vector< std::string > outfileNames_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > spyScopeRawDigisToken_
edm::EDGetTokenT< std::vector< uint32_t > > spyL1Token_
edm::EDGetTokenT< std::vector< uint32_t > > spyTotCountToken_
SiStripSpyMonitorModule::~SiStripSpyMonitorModule ( )
override

Definition at line 181 of file SiStripSpyMonitorModule.cc.

References mps_fire::i, cmsBatch::nFiles, outfile_, outfileMap_, and outfileNames_.

182 {
183  const unsigned int nFiles = outfileNames_.size();
184  for (unsigned int i(0); i<nFiles; i++){
185  outfile_[i].close();
186  }
187 
188  outfileMap_.clear();
189  outfileNames_.clear();
190 
191 }
std::map< std::string, unsigned int > outfileMap_
std::vector< std::string > outfileNames_

Member Function Documentation

void SiStripSpyMonitorModule::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 227 of file SiStripSpyMonitorModule.cc.

References sistrip::SpyUtilities::Frame::apvAddress, sistrip::SpyUtilities::Frame::apvErrorBit, FedChannelConnection::apvPairNumber(), FedChannelConnection::detId(), sistrip::SpyUtilities::Frame::digitalHigh, sistrip::SpyUtilities::Frame::digitalLow, MillePedeFileConverter_cfg::e, edm::DetSetVector< T >::end(), edm::EventID::event(), evt_, sistrip::SpyUtilities::extractFrameInfo(), sistrip::FED_ID_MAX, sistrip::FED_ID_MIN, sistrip::FEDCH_PER_FED, SiStripFedCabling::fedConnection(), SPYHistograms::fillCountersHistograms(), SPYHistograms::fillDetailedHistograms(), SPYHistograms::fillFEDHistograms(), fillWithLocalEvtNum_, edm::DetSetVector< T >::find(), sistrip::SpyUtilities::Frame::firstHeaderBit, firstHeaderBit_, sistrip::SpyUtilities::Frame::firstTrailerBit, firstTrailerBit_, frameQuality_, edm::Event::getByToken(), sistrip::SpyUtilities::getCabling(), sistrip::SpyUtilities::getMajorityHeader(), SPYHistograms::Errors::hasAPVAddressError0, SPYHistograms::Errors::hasAPVAddressError1, SPYHistograms::Errors::hasErrorBit0, SPYHistograms::Errors::hasErrorBit1, SPYHistograms::Errors::hasHighPb, SPYHistograms::Errors::hasHighRange, SPYHistograms::Errors::hasLowPb, SPYHistograms::Errors::hasLowRange, SPYHistograms::Errors::hasMaxSat, SPYHistograms::Errors::hasMinZero, hasNegativePedSubtr(), SPYHistograms::Errors::hasNegPeds, SPYHistograms::Errors::hasNoData, SPYHistograms::Errors::hasOOS, SPYHistograms::Errors::hasOtherPbs, histManager_, mps_fire::i, edm::EventBase::id(), identifyTickmarks(), FedChannelConnection::isConnected(), LogDebug, sistrip::SpyUtilities::FrameQuality::maxDigiRange, sistrip::SpyUtilities::FrameQuality::maxTickHeight, sistrip::SpyUtilities::FrameQuality::maxZeroLight, sistrip::SpyUtilities::FrameQuality::minDigiRange, sistrip::SpyUtilities::FrameQuality::minTickHeight, sistrip::SpyUtilities::FrameQuality::minZeroLight, SPYHistograms::ErrorCounters::nAPVAddressError, SPYHistograms::ErrorCounters::nAPVError, cmsBatch::nFiles, SPYHistograms::ErrorCounters::nHighPb, SPYHistograms::ErrorCounters::nHighRange, SPYHistograms::ErrorCounters::nLowPb, SPYHistograms::ErrorCounters::nLowRange, SPYHistograms::ErrorCounters::nMaxSat, SPYHistograms::ErrorCounters::nMinZero, SPYHistograms::ErrorCounters::nNegPeds, SPYHistograms::ErrorCounters::nNoData, SPYHistograms::ErrorCounters::nOOS, SPYHistograms::ErrorCounters::nOtherPbs, MillePedeFileConverter_cfg::out, outfile_, outfileMap_, outfileNames_, edm::Handle< T >::product(), sistrip::SpyUtilities::range(), sistrip::SPY_SAMPLES_PER_CHANNEL, spyAPVeToken_, spyL1Token_, spyPedSubtrDigisToken_, spyScopeRawDigisToken_, spyTotCountToken_, sistrip::STRIPS_PER_FEDCH, sistrip::SpyUtilities::threshold(), utility_, cms::Exception::what(), and writeCabling_.

229 {
230 
231  //update cabling and pedestals
232  const SiStripFedCabling* lCabling = utility_.getCabling( iSetup );
233  if (evt_ == 0 && writeCabling_){
234  std::ofstream lOutCabling;
235  lOutCabling.open("trackerDetId_FEDIdChNum_list.txt",std::ios::out);
236  for (uint16_t lFedId = sistrip::FED_ID_MIN; lFedId <= sistrip::FED_ID_MAX; ++lFedId) {//loop on feds
237  for (uint16_t lFedChannel = 0; lFedChannel < sistrip::FEDCH_PER_FED; lFedChannel++){//loop on channels
238  const FedChannelConnection & lConnection = lCabling->fedConnection(lFedId,lFedChannel);
239  if (!lConnection.isConnected()) continue;
240  uint32_t lDetId = lConnection.detId();
241  lOutCabling << "FED ID = " << lFedId
242  << ", Channel = " << lFedChannel
243  << ",fedkey = " << sistrip::FEDCH_PER_FED*lFedId + lFedChannel
244  << ", detId = " << lDetId
245  << std::endl;
246  }
247  }
248  lOutCabling.close();
249  }
250 
251  //For spy data
252  //get map of TotalEventCount and L1ID, indexed by fedId, and APVaddress indexed by fedIndex.
253  edm::Handle<std::vector<uint32_t> > lSpyL1IDHandle,lSpyTotCountHandle,lSpyAPVeHandle;
254  try {
255  iEvent.getByToken(spyL1Token_,lSpyL1IDHandle);
256  iEvent.getByToken(spyTotCountToken_,lSpyTotCountHandle);
257  iEvent.getByToken(spyAPVeToken_,lSpyAPVeHandle);
258  }
259  catch (const cms::Exception& e) {
260  LogError("SiStripSpyMonitorModule") << e.what() ;
261  return;
262  }
263  //const std::map<uint32_t,uint32_t> & lSpyMaxCountMap = *lSpyL1IDHandle;
264  //const std::map<uint32_t,uint32_t> & lSpyMinCountMap = *lSpyTotCountHandle;
265  const std::vector<uint32_t> & lSpyAPVeVec = *lSpyAPVeHandle;
266 
267  //retrieve the scope digis
269  try {
270  iEvent.getByToken(spyScopeRawDigisToken_, digisHandle);
271  }
272  catch (const cms::Exception& e) {
273  LogError("SiStripSpyMonitorModule") << e.what() ;
274  return;
275  }
276  const edm::DetSetVector<SiStripRawDigi> * lInputDigis = digisHandle.product();
277 
278  //retrieve the reordered payload digis
280  try {
281  iEvent.getByToken(spyPedSubtrDigisToken_, payloadHandle);
282  }
283  catch (const cms::Exception& e) {
284  LogError("SiStripSpyMonitorModule") << e.what() ;
285  return;
286  }
287  const edm::DetSetVector<SiStripRawDigi> * lPayloadDigis = payloadHandle.product();
288 
289 
290  //for first event only
291  //loop first on channels to calculate majority value of when the first header bit is found.
292  //output info message to give the value found
293  //should currently be 6 but may vary in the futur
294  //then we can check firstTrailerBit is +256+24 after
295 
296  if (evt_ == 0){
299  }
300 
301  //initialise some counters, filled in histos eventually
303  lCounters.nNoData = 0;
304  lCounters.nLowRange = 0;
305  lCounters.nHighRange = 0;
306  lCounters.nMinZero = 0;
307  lCounters.nMaxSat = 0;
308  lCounters.nLowPb = 0;
309  lCounters.nHighPb = 0;
310  lCounters.nOOS = 0;
311  lCounters.nOtherPbs = 0;
312  lCounters.nAPVError = 0;
313  lCounters.nAPVAddressError = 0;
314  lCounters.nNegPeds = 0;
315 
316 
317 
318  //fill event number for output text files
319  const unsigned int nFiles = outfileNames_.size();
320  for (unsigned int i(0); i<nFiles; i++){
321  outfile_[i] << "**** evt "<< iEvent.id().event() << " ****" << std::endl ;
322  }
323 
324 
325  //loop over all FEDs and channels
326 
327  for (uint16_t lFedId = sistrip::FED_ID_MIN; lFedId <= sistrip::FED_ID_MAX; ++lFedId) {//loop on feds
328 
329  SPYHistograms::Errors lFEDErrors;
330  lFEDErrors.hasNoData = false;
331  lFEDErrors.hasLowRange = false;
332  lFEDErrors.hasHighRange = false;
333  lFEDErrors.hasMinZero = false;
334  lFEDErrors.hasMaxSat = false;
335  lFEDErrors.hasLowPb = false;
336  lFEDErrors.hasHighPb = false;
337  lFEDErrors.hasOOS = false;
338  lFEDErrors.hasOtherPbs = false;
339  lFEDErrors.hasErrorBit0 = false;
340  lFEDErrors.hasErrorBit1 = false;
341  lFEDErrors.hasAPVAddressError0 = false;
342  lFEDErrors.hasAPVAddressError1 = false;
343  lFEDErrors.hasNegPeds = false;
344 
345  uint32_t lAPVAddrRef = lSpyAPVeVec.at(lFedId);
346 
347  for (uint16_t lFedChannel = 0; lFedChannel < sistrip::FEDCH_PER_FED; lFedChannel++){//loop on channels
348 
349  uint32_t lFedIndex = sistrip::FEDCH_PER_FED*lFedId + lFedChannel;
350 
351  const FedChannelConnection & lConnection = lCabling->fedConnection(lFedId,lFedChannel);
352 
353  if (!lConnection.isConnected()) continue;
354 
355  uint32_t lDetId = lConnection.detId();
356  //uint16_t lNPairs = lConnection.nApvPairs();
357  uint16_t lPair = lConnection.apvPairNumber();
358 
359  edm::DetSetVector<SiStripRawDigi>::const_iterator lDigis = lInputDigis->find(lFedIndex);
360 
361  //pedsubtr digis
362  edm::DetSetVector<SiStripRawDigi>::const_iterator lPayload = lPayloadDigis->find(lDetId);
363 
364  //no digis found, continue.
365  if (lDigis == lInputDigis->end()) {
366  LogDebug("SiStripSpyMonitorModule") << " -- digis not found in ScopeRawDigis map for FEDID "
367  << lFedId << " and FED channel " << lFedChannel << std::endl;
368  continue;
369  }
370 
372 
373  SPYHistograms::Errors lErrors;
374  lErrors.hasNoData = false;
375  lErrors.hasLowRange = false;
376  lErrors.hasHighRange = false;
377  lErrors.hasMinZero = false;
378  lErrors.hasMaxSat = false;
379  lErrors.hasLowPb = false;
380  lErrors.hasHighPb = false;
381  lErrors.hasOOS = false;
382  lErrors.hasOtherPbs = false;
383  lErrors.hasErrorBit0 = false;
384  lErrors.hasErrorBit1 = false;
385  lErrors.hasAPVAddressError0 = false;
386  lErrors.hasAPVAddressError1 = false;
387  lErrors.hasNegPeds = false;
388 
389  uint16_t lRange = sistrip::SpyUtilities::range(lFrame);
390  uint16_t lThreshold = sistrip::SpyUtilities::threshold(lFrame);
391 
392  if (lRange == 0) {
393  lCounters.nNoData++;
394  lErrors.hasNoData = true;
395  lFEDErrors.hasNoData = true;
396  if (outfileMap_.find("NoData") != outfileMap_.end()) outfile_[outfileMap_["NoData"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
397  }
398  else if (lFrame.digitalLow == 0 && lRange > 0) {
399  lCounters.nMinZero++;
400  lErrors.hasMinZero = true;
401  lFEDErrors.hasMinZero = true;
402  if (outfileMap_.find("MinZero") != outfileMap_.end()) outfile_[outfileMap_["MinZero"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
403  }
404  else if (lFrame.digitalHigh >= 1023){
405  lCounters.nMaxSat++;
406  lErrors.hasMaxSat = true;
407  lFEDErrors.hasMaxSat = true;
408  if (outfileMap_.find("MaxSat") != outfileMap_.end()) outfile_[outfileMap_["MaxSat"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
409  }
410  else if (lRange > 0 && lRange < frameQuality_.minDigiRange) {
411  lCounters.nLowRange++;
412  lErrors.hasLowRange = true;
413  lFEDErrors.hasLowRange = true;
414  if (outfileMap_.find("LowRange") != outfileMap_.end()) outfile_[outfileMap_["LowRange"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
415  }
416  else if (lRange > frameQuality_.maxDigiRange) {
417  lCounters.nHighRange++;
418  lErrors.hasHighRange = true;
419  lFEDErrors.hasHighRange = true;
420  if (outfileMap_.find("HighRange") != outfileMap_.end()) outfile_[outfileMap_["HighRange"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
421  }
423  lCounters.nLowPb++;
424  lErrors.hasLowPb = true;
425  lFEDErrors.hasLowPb = true;
426  if (outfileMap_.find("LowPb") != outfileMap_.end()) outfile_[outfileMap_["LowPb"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
427  }
429  lCounters.nHighPb++;
430  lErrors.hasHighPb = true;
431  lFEDErrors.hasHighPb = true;
432  if (outfileMap_.find("HighPb") != outfileMap_.end()) outfile_[outfileMap_["HighPb"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
433  }
434  else if ( lFrame.firstHeaderBit != firstHeaderBit_ && //header in wrong position
435  ( (lFrame.firstHeaderBit != sistrip::SPY_SAMPLES_PER_CHANNEL && //header and
436  lFrame.firstTrailerBit != sistrip::SPY_SAMPLES_PER_CHANNEL && //trailer found
437  lFrame.firstTrailerBit-lFrame.firstHeaderBit == 280) || //+ right distance between them
438  (lFrame.firstHeaderBit != sistrip::SPY_SAMPLES_PER_CHANNEL && // or header found
439  lFrame.firstTrailerBit == sistrip::SPY_SAMPLES_PER_CHANNEL && // and trailer not found
440  lFrame.firstHeaderBit > 16 ) || // corresponding to back-to-back frame late enough
441  (lFrame.firstHeaderBit == sistrip::SPY_SAMPLES_PER_CHANNEL && // or header not found
442  identifyTickmarks(*lDigis,lThreshold) ) // but such that tickmark compatible with OOS frame
443  )
444  ){
445  lCounters.nOOS++;
446  lErrors.hasOOS = true;
447  lFEDErrors.hasOOS = true;
448  if (outfileMap_.find("OOS") != outfileMap_.end()) outfile_[outfileMap_["OOS"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
449  }
450  else if ( !(lFrame.firstHeaderBit == firstHeaderBit_ && lFrame.firstTrailerBit == firstTrailerBit_) ){
451  lCounters.nOtherPbs++;
452  lErrors.hasOtherPbs = true;
453  lFEDErrors.hasOtherPbs = true;
454  if (outfileMap_.find("OtherPbs") != outfileMap_.end()) outfile_[outfileMap_["OtherPbs"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
455  }
456  else if (lFrame.apvErrorBit.first || lFrame.apvErrorBit.second) {
457  if (lFrame.apvErrorBit.first) {
458  lCounters.nAPVError++;
459  lErrors.hasErrorBit0 = true;
460  lFEDErrors.hasErrorBit0 = true;
461  }
462  if (lFrame.apvErrorBit.second) {
463  lCounters.nAPVError++;
464  lErrors.hasErrorBit1 = true;
465  lFEDErrors.hasErrorBit1 = true;
466  }
467  if (outfileMap_.find("APVError") != outfileMap_.end()) {
468  outfile_[outfileMap_["APVError"]] << lFedId << " " << lFedChannel << " " << lDetId ;
469  if (lFrame.apvErrorBit.first) outfile_[outfileMap_["APVError"]] << " APV0" << std::endl;
470  if (lFrame.apvErrorBit.second) outfile_[outfileMap_["APVError"]] << " APV1" << std::endl;
471  }
472  }
473  else if ( lFrame.apvAddress.first != lAPVAddrRef ||
474  lFrame.apvAddress.second != lAPVAddrRef ) {
475  if (lFrame.apvAddress.first != lAPVAddrRef){
476  lCounters.nAPVAddressError++;
477  lErrors.hasAPVAddressError0 = true;
478  lFEDErrors.hasAPVAddressError0 = true;
479  }
480  if (lFrame.apvAddress.second != lAPVAddrRef){
481  lCounters.nAPVAddressError++;
482  lErrors.hasAPVAddressError1 = true;
483  lFEDErrors.hasAPVAddressError1 = true;
484  }
485  if (outfileMap_.find("APVAddressError") != outfileMap_.end()){
486  outfile_[outfileMap_["APVAddressError"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
487  if (lFrame.apvAddress.first != lAPVAddrRef) outfile_[outfileMap_["APVAddressError"]] << " APV0" << std::endl;
488  if (lFrame.apvAddress.second != lAPVAddrRef) outfile_[outfileMap_["APVAddressError"]] << " APV1" << std::endl;
489  }
490  }
491  else if (lPayload != lPayloadDigis->end() && hasNegativePedSubtr(*lPayload,lPair)){
492  lCounters.nNegPeds++;
493  lErrors.hasNegPeds = true;
494  lFEDErrors.hasNegPeds = true;
495  if (outfileMap_.find("NegPeds") != outfileMap_.end()) outfile_[outfileMap_["NegPeds"]] << lFedId << " " << lFedChannel << " " << lDetId << std::endl;
496  }
497 
498  histManager_.fillDetailedHistograms(lErrors,lFrame,lFedId,lFedChannel);
499 
500  }//loop on channels
501 
502 
503  histManager_.fillFEDHistograms(lFEDErrors,lFedId);
504 
505  }//loop on feds
506 
507  double lTime;
508  //if (fillWithEvtNum_)
509  //lTime = iEvent.id().event();
510  //else if (fillWithLocalEvtNum_) lTime = evt_;
511  //no orbit number for spy data !!
512  //else lTime = iEvent.orbitNumber()/11223.;
513  if (fillWithLocalEvtNum_) {
514  // casting from unsigned long long to a double here
515  // doing it explicitely
516  lTime = static_cast<double>(evt_);
517  } else {
518  // casting from unsigned long long to a double here
519  // doing it explicitely
520  lTime = static_cast<double>(iEvent.id().event());
521  }
522 
523  histManager_.fillCountersHistograms(lCounters,lTime);
524 
525 
526  //used to fill histo vs time with local event number....
527  evt_++;
528 
529 }//analyze method
#define LogDebug(id)
EventNumber_t event() const
Definition: EventID.h:41
static const uint16_t FED_ID_MIN
iterator find(det_id_type id)
Definition: DetSetVector.h:290
FedChannelConnection fedConnection(uint16_t fed_id, uint16_t fed_ch) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
uint16_t apvPairNumber() const
bool identifyTickmarks(const edm::DetSetVector< SiStripRawDigi >::detset &channelDigis, const uint16_t threshold)
static const uint16_t SPY_SAMPLES_PER_CHANNEL
char const * what() const override
Definition: Exception.cc:141
std::pair< uint8_t, uint8_t > apvAddress
bool hasNegativePedSubtr(const edm::DetSetVector< SiStripRawDigi >::detset &channelDigis, uint16_t aPair)
edm::EDGetTokenT< std::vector< uint32_t > > spyAPVeToken_
void fillCountersHistograms(const ErrorCounters &aCounter, const double aTime)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > spyPedSubtrDigisToken_
static const Frame extractFrameInfo(const edm::DetSetVector< SiStripRawDigi >::detset &channelDigis, bool aPrintDebug=false)
const uint32_t & detId() const
std::map< std::string, unsigned int > outfileMap_
Class containning control, module, detector and connection information, at the level of a FED channel...
sistrip::SpyUtilities::FrameQuality frameQuality_
static const uint16_t range(const Frame &aFrame)
std::vector< std::string > outfileNames_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > spyScopeRawDigisToken_
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:361
static const uint16_t threshold(const Frame &aFrame)
static const uint16_t STRIPS_PER_FEDCH
T const * product() const
Definition: Handle.h:81
const SiStripFedCabling * getCabling(const edm::EventSetup &)
Updates the cabling object from the DB.
void fillFEDHistograms(const Errors &aErr, const unsigned int aFedId)
std::pair< bool, bool > apvErrorBit
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
edm::EventID id() const
Definition: EventBase.h:60
static const uint16_t FEDCH_PER_FED
void fillDetailedHistograms(const Errors &aErr, const sistrip::SpyUtilities::Frame &aFrame, const unsigned int aFedId, const unsigned int aFedChannel)
static void getMajorityHeader(const edm::DetSetVector< SiStripRawDigi > *aInputDigis, uint16_t &firstHeaderBit, bool printResult=true)
static const uint16_t FED_ID_MAX
edm::EDGetTokenT< std::vector< uint32_t > > spyL1Token_
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:104
sistrip::SpyUtilities utility_
edm::EDGetTokenT< std::vector< uint32_t > > spyTotCountToken_
void SiStripSpyMonitorModule::bookHistograms ( DQMStore::IBooker ,
edm::Run const &  ,
edm::EventSetup const &   
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 200 of file SiStripSpyMonitorModule.cc.

References SPYHistograms::bookAllFEDHistograms(), SPYHistograms::bookFEDHistograms(), SPYHistograms::bookTopLevelHistograms(), sistrip::FED_ID_MAX, sistrip::FED_ID_MIN, fillAllDetailedHistograms_, folderName_, edm::EventSetup::get(), histManager_, edm::ESHandle< T >::product(), DQMStore::IBooker::pwd(), and DQMStore::IBooker::setCurrentFolder().

201 {
202  ibooker.setCurrentFolder(folderName_);
203 
204  LogInfo("SiStripSpyMonitorModule") << " Histograms will be written in "
205  << folderName_
206  << ". Current folder is : "
207  << ibooker.pwd()
208  << std::endl;
209 
210  edm::ESHandle<TkDetMap> tkDetMapHandle;
211  eSetup.get<TrackerTopologyRcd>().get(tkDetMapHandle);
212  const TkDetMap* tkDetMap = tkDetMapHandle.product();
213 
214  //this propagates dqm_ to the histoclass, must be called !
215  histManager_.bookTopLevelHistograms(ibooker, tkDetMap);
216 
218 
219  //dummy error object
220  SPYHistograms::Errors lError;
221  for (uint16_t lFedId = sistrip::FED_ID_MIN; lFedId <= sistrip::FED_ID_MAX; ++lFedId)
222  histManager_.bookFEDHistograms(ibooker , lFedId , lError , true);
223 }
static const uint16_t FED_ID_MIN
void bookTopLevelHistograms(DQMStore::IBooker &, const TkDetMap *)
void bookAllFEDHistograms(DQMStore::IBooker &)
void bookFEDHistograms(DQMStore::IBooker &, const unsigned int fedId, const Errors &aErr, bool doAll=false)
static const uint16_t FED_ID_MAX
T const * product() const
Definition: ESHandle.h:86
void SiStripSpyMonitorModule::dqmBeginRun ( const edm::Run r,
const edm::EventSetup c 
)
overrideprivate

Definition at line 193 of file SiStripSpyMonitorModule.cc.

References evt_, firstHeaderBit_, and firstTrailerBit_.

194 {
195  evt_ = 0;
196  firstHeaderBit_ = 0;
197  firstTrailerBit_ = 0;
198 }
edm::DetSetVector< SiStripRawDigi >::detset::const_iterator SiStripSpyMonitorModule::findTwoConsecutive ( const edm::DetSetVector< SiStripRawDigi >::detset &  channelDigis,
const uint16_t  threshold,
uint16_t &  aCounter 
)
private

Definition at line 583 of file SiStripSpyMonitorModule.cc.

References edm::DetSet< T >::begin(), DEFINE_FWK_MODULE, edm::DetSet< T >::end(), sistrip::SPY_SAMPLES_PER_CHANNEL, and electronIdCutBased_cfi::threshold.

Referenced by identifyTickmarks().

586 {
587  const edm::DetSetVector<SiStripRawDigi>::detset::const_iterator endChannelDigis = channelDigis.end();
588  edm::DetSetVector<SiStripRawDigi>::detset::const_iterator lStart = channelDigis.begin()+aCounter;
589 
590  bool foundTrailer = false;
591  // Loop over digis looking for last two above threshold
592  uint8_t aboveThreshold = 0;
593 
594  for (; lStart != endChannelDigis; ++lStart) {
595  if ( lStart->adc() > threshold) {
596  aboveThreshold++;
597  }
598  else {
599  aboveThreshold = 0;
600  }
601  if (aboveThreshold == 2) {foundTrailer = true; break; }
602  aCounter++;
603  }//end of loop over digis
604 
605  if (foundTrailer) return lStart;
606  else {
608  return endChannelDigis;
609  }
610 }
iterator end()
Definition: DetSet.h:60
static const uint16_t SPY_SAMPLES_PER_CHANNEL
iterator begin()
Definition: DetSet.h:59
collection_type::const_iterator const_iterator
Definition: DetSet.h:33
bool SiStripSpyMonitorModule::hasNegativePedSubtr ( const edm::DetSetVector< SiStripRawDigi >::detset &  channelDigis,
uint16_t  aPair 
)
private

Definition at line 531 of file SiStripSpyMonitorModule.cc.

References edm::DetSet< T >::begin(), KineDebug3::count(), edm::DetSet< T >::end(), sistrip::STRIPS_PER_FEDCH, and heppy_batch::val.

Referenced by analyze().

533 {
535  const edm::DetSetVector<SiStripRawDigi>::detset::const_iterator endChannelDigis = channelDigis.end();
536 
537  uint32_t count = 0;
538  for (; iDigi != endChannelDigis; ++iDigi) {
539  const uint16_t val = iDigi->adc();
540  uint16_t lPair = static_cast<uint16_t>(count/sistrip::STRIPS_PER_FEDCH);
541  if (val == 0 && lPair == aPair) return true;
542  count++;
543  }
544 
545  return false;
546 
547 }
iterator end()
Definition: DetSet.h:60
iterator begin()
Definition: DetSet.h:59
static const uint16_t STRIPS_PER_FEDCH
collection_type::const_iterator const_iterator
Definition: DetSet.h:33
bool SiStripSpyMonitorModule::identifyTickmarks ( const edm::DetSetVector< SiStripRawDigi >::detset &  channelDigis,
const uint16_t  threshold 
)
private

Definition at line 549 of file SiStripSpyMonitorModule.cc.

References KineDebug3::count(), edm::DetSet< T >::detId(), edm::DetSet< T >::end(), evt_, findTwoConsecutive(), LogDebug, and sistrip::SPY_SAMPLES_PER_CHANNEL.

Referenced by analyze().

551 {
552 
553  //start from the end
555  uint16_t lastPos = sistrip::SPY_SAMPLES_PER_CHANNEL;
556  uint16_t nTrailers = 0;
558 
559  for ( ; count == 0; count--){
560  iDigi = findTwoConsecutive(channelDigis,threshold,count);
561  //if found, in different position = 70 before than previous value, go and look 70 before
562  if (iDigi != channelDigis.end() &&
563  (lastPos == sistrip::SPY_SAMPLES_PER_CHANNEL || count == lastPos+1-70)) {
564  nTrailers++;
565  lastPos = count-1;
566  count -= 70;
567  }
568  //else keep looking
569  else count--;
570  }
571 
572  if (nTrailers > 1) LogDebug("SiStripSpyMonitorModule") << " -- Found "
573  << nTrailers << " trailers every 70 clock cycles for channel "
574  << channelDigis.detId()
575  << ", evt " << evt_
576  << std::endl;
577  //if only one found, should be < 280 otherwise header should have been found and this method would not be called
578  return (nTrailers > 1) || (nTrailers == 1 && lastPos < 280);
579 
580 }
#define LogDebug(id)
iterator end()
Definition: DetSet.h:60
edm::DetSetVector< SiStripRawDigi >::detset::const_iterator findTwoConsecutive(const edm::DetSetVector< SiStripRawDigi >::detset &channelDigis, const uint16_t threshold, uint16_t &aCounter)
det_id_type detId() const
Definition: DetSet.h:72
static const uint16_t SPY_SAMPLES_PER_CHANNEL
collection_type::const_iterator const_iterator
Definition: DetSet.h:33

Member Data Documentation

edm::EventNumber_t SiStripSpyMonitorModule::evt_
private
bool SiStripSpyMonitorModule::fillAllDetailedHistograms_
private

Definition at line 108 of file SiStripSpyMonitorModule.cc.

Referenced by bookHistograms().

bool SiStripSpyMonitorModule::fillWithEvtNum_
private

Definition at line 110 of file SiStripSpyMonitorModule.cc.

bool SiStripSpyMonitorModule::fillWithLocalEvtNum_
private

Definition at line 111 of file SiStripSpyMonitorModule.cc.

Referenced by analyze().

uint16_t SiStripSpyMonitorModule::firstHeaderBit_
private

Definition at line 114 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and dqmBeginRun().

uint16_t SiStripSpyMonitorModule::firstTrailerBit_
private

Definition at line 115 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and dqmBeginRun().

std::string SiStripSpyMonitorModule::folderName_
private

Definition at line 106 of file SiStripSpyMonitorModule.cc.

Referenced by bookHistograms().

sistrip::SpyUtilities::FrameQuality SiStripSpyMonitorModule::frameQuality_
private

Definition at line 118 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and SiStripSpyMonitorModule().

SPYHistograms SiStripSpyMonitorModule::histManager_
private

Definition at line 113 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), bookHistograms(), and SiStripSpyMonitorModule().

uint32_t SiStripSpyMonitorModule::maxDigiRange_
private

Definition at line 97 of file SiStripSpyMonitorModule.cc.

uint32_t SiStripSpyMonitorModule::maxDigitalHigh_
private

Definition at line 101 of file SiStripSpyMonitorModule.cc.

uint32_t SiStripSpyMonitorModule::maxDigitalLow_
private

Definition at line 99 of file SiStripSpyMonitorModule.cc.

uint32_t SiStripSpyMonitorModule::minDigiRange_
private

Definition at line 96 of file SiStripSpyMonitorModule.cc.

uint32_t SiStripSpyMonitorModule::minDigitalHigh_
private

Definition at line 100 of file SiStripSpyMonitorModule.cc.

uint32_t SiStripSpyMonitorModule::minDigitalLow_
private

Definition at line 98 of file SiStripSpyMonitorModule.cc.

std::ofstream SiStripSpyMonitorModule::outfile_[20]
private
std::map<std::string,unsigned int> SiStripSpyMonitorModule::outfileMap_
private
std::vector<std::string> SiStripSpyMonitorModule::outfileNames_
private
edm::InputTag SiStripSpyMonitorModule::spyAPVeTag_
private

Definition at line 89 of file SiStripSpyMonitorModule.cc.

Referenced by SiStripSpyMonitorModule().

edm::EDGetTokenT<std::vector<uint32_t> > SiStripSpyMonitorModule::spyAPVeToken_
private

Definition at line 93 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and SiStripSpyMonitorModule().

edm::InputTag SiStripSpyMonitorModule::spyL1Tag_
private

Definition at line 87 of file SiStripSpyMonitorModule.cc.

Referenced by SiStripSpyMonitorModule().

edm::EDGetTokenT<std::vector<uint32_t> > SiStripSpyMonitorModule::spyL1Token_
private

Definition at line 91 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and SiStripSpyMonitorModule().

edm::InputTag SiStripSpyMonitorModule::spyPedSubtrDigisTag_
private

Definition at line 80 of file SiStripSpyMonitorModule.cc.

Referenced by SiStripSpyMonitorModule().

edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > SiStripSpyMonitorModule::spyPedSubtrDigisToken_
private

Definition at line 83 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and SiStripSpyMonitorModule().

edm::InputTag SiStripSpyMonitorModule::spyScopeRawDigisTag_
private

Definition at line 79 of file SiStripSpyMonitorModule.cc.

Referenced by SiStripSpyMonitorModule().

edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > SiStripSpyMonitorModule::spyScopeRawDigisToken_
private

Definition at line 82 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and SiStripSpyMonitorModule().

edm::InputTag SiStripSpyMonitorModule::spyTotCountTag_
private

Definition at line 88 of file SiStripSpyMonitorModule.cc.

Referenced by SiStripSpyMonitorModule().

edm::EDGetTokenT<std::vector<uint32_t> > SiStripSpyMonitorModule::spyTotCountToken_
private

Definition at line 92 of file SiStripSpyMonitorModule.cc.

Referenced by analyze(), and SiStripSpyMonitorModule().

sistrip::SpyUtilities SiStripSpyMonitorModule::utility_
private

Definition at line 117 of file SiStripSpyMonitorModule.cc.

Referenced by analyze().

bool SiStripSpyMonitorModule::writeCabling_
private

Definition at line 124 of file SiStripSpyMonitorModule.cc.

Referenced by analyze().