CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
SiPixelRawDataErrorSource Class Reference

#include <SiPixelRawDataErrorSource.h>

Inheritance diagram for SiPixelRawDataErrorSource:
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 Types

typedef edm::DetSet< SiPixelRawDataError >::const_iterator ErrorIterator
 
- 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
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
virtual void bookMEs (DQMStore::IBooker &)
 
virtual void buildStructure (edm::EventSetup const &)
 
void dqmBeginRun (const edm::Run &, edm::EventSetup const &) override
 
 SiPixelRawDataErrorSource (const edm::ParameterSet &conf)
 
 ~SiPixelRawDataErrorSource () 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 () noexcept(false) 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 Attributes

bool bladeOn
 
MonitorElementbyLumiErrors
 
edm::ParameterSet conf_
 
MonitorElementerrorRate
 
int eventNo
 
MonitorElementfedcounter
 
bool firstRun
 
edm::EDGetTokenT< FEDRawDataCollectioninputSourceToken_
 
bool isPIB
 
bool isUpgrade
 
bool ladOn
 
MonitorElementmeErrorType_ [40]
 
MonitorElementmeEvtNbr_ [40]
 
MonitorElementmeEvtSize_ [40]
 
MonitorElementmeFedChLErr_ [40]
 
MonitorElementmeFedChNErr_ [40]
 
MonitorElementmeFedETypeNErr_ [40]
 
MonitorElementmeFullType_ [40]
 
std::map< std::string, MonitorElement ** > meMapFEDs_
 
MonitorElementmeNErrors_ [40]
 
MonitorElementmeTBMMessage_ [40]
 
MonitorElementmeTBMType_ [40]
 
bool modOn
 
bool reducedSet
 
bool saveFile
 
bool slowDown
 
edm::EDGetTokenT< edm::DetSetVector< SiPixelRawDataError > > src_
 
std::map< uint32_t, SiPixelRawDataErrorModule * > theFEDStructure
 
std::map< uint32_t, SiPixelRawDataErrorModule * > thePixelStructure
 
std::string topFolderName_
 

Additional Inherited Members

- 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

Description: Produces histograms for error information generated at the raw2digi stage for the pixel tracker.

Usage: Takes a DetSetVector<SiPixelRawDataError> as input, and uses it to populate a folder hierarchy (organized by detId) with histograms containing information about the errors. Uses SiPixelRawDataErrorModule class to book and fill individual folders. Note that this source is different than other DQM sources in the creation of an unphysical detId folder (detId=0xffffffff) to hold information about errors for which there is no detId available (except the dummy detId given to it at raw2digi).

Definition at line 53 of file SiPixelRawDataErrorSource.h.

Member Typedef Documentation

Definition at line 58 of file SiPixelRawDataErrorSource.h.

Constructor & Destructor Documentation

SiPixelRawDataErrorSource::SiPixelRawDataErrorSource ( const edm::ParameterSet conf)
explicit

Definition at line 54 of file SiPixelRawDataErrorSource.cc.

References conf_, firstRun, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), inputSourceToken_, AlCaHLTBitMon_QueryRunRegistry::string, and topFolderName_.

54  :
55  conf_(iConfig),
57  saveFile( conf_.getUntrackedParameter<bool>("saveFile",false) ),
58  isPIB( conf_.getUntrackedParameter<bool>("isPIB",false) ),
59  slowDown( conf_.getUntrackedParameter<bool>("slowDown",false) ),
60  reducedSet( conf_.getUntrackedParameter<bool>("reducedSet",false) ),
61  modOn( conf_.getUntrackedParameter<bool>("modOn",true) ),
62  ladOn( conf_.getUntrackedParameter<bool>("ladOn",false) ),
63  bladeOn( conf_.getUntrackedParameter<bool>("bladeOn",false) ),
64  isUpgrade( conf_.getUntrackedParameter<bool>("isUpgrade",false) )
65 {
66  firstRun = true;
67  LogInfo ("PixelDQM") << "SiPixelRawDataErrorSource::SiPixelRawDataErrorSource: Got DQM BackEnd interface"<<endl;
68  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
69  inputSourceToken_ = consumes<FEDRawDataCollection>(conf_.getUntrackedParameter<string>("inputSource", "source"));
70 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::DetSetVector< SiPixelRawDataError > > src_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< FEDRawDataCollection > inputSourceToken_
SiPixelRawDataErrorSource::~SiPixelRawDataErrorSource ( )
override

Definition at line 73 of file SiPixelRawDataErrorSource.cc.

74 {
75  // do anything here that needs to be done at desctruction time
76  // (e.g. close files, deallocate resources etc.)
77  LogInfo ("PixelDQM") << "SiPixelRawDataErrorSource::~SiPixelRawDataErrorSource: Destructor"<<endl;
78 }

Member Function Documentation

void SiPixelRawDataErrorSource::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 103 of file SiPixelRawDataErrorSource.cc.

References bladeOn, byLumiErrors, FEDRawData::data(), errorRate, eventNo, fedcounter, FEDRawDataCollection::FEDData(), MonitorElement::Fill(), edm::Event::getByToken(), mps_fire::i, input, inputSourceToken_, createfilelist::int, edm::HandleBase::isValid(), ladOn, edm::EventBase::luminosityBlock(), meMapFEDs_, modOn, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, MonitorElement::setBinContent(), FEDRawData::size(), slowDown, src_, DetId::subdetId(), theFEDStructure, and thePixelStructure.

104 {
105  eventNo++;
106  //check feds in readout
107  if(eventNo==1){
108  // check if any Pixel FED is in readout:
109  edm::Handle<FEDRawDataCollection> rawDataHandle;
110  iEvent.getByToken(inputSourceToken_, rawDataHandle);
111  if(!rawDataHandle.isValid()){
112  edm::LogInfo("SiPixelRawDataErrorSource") << "inputsource is empty";
113  }
114  else{
115  const FEDRawDataCollection& rawDataCollection = *rawDataHandle;
116  for(int i = 0; i != 40; i++){
117  if(rawDataCollection.FEDData(i).size() && rawDataCollection.FEDData(i).data()) fedcounter->setBinContent(i+1,1);
118  }
119  }
120  }
121  // get input data
123  iEvent.getByToken( src_, input );
124  if (!input.isValid()) return;
125 
126  int lumiSection = (int)iEvent.luminosityBlock();
127 
128  int nEventBPIXModuleErrors = 0; int nEventFPIXModuleErrors = 0; int nEventBPIXFEDErrors = 0; int nEventFPIXFEDErrors = 0;
129  int nErrors = 0;
130 
131  std::map<uint32_t,SiPixelRawDataErrorModule*>::iterator struct_iter;
132  std::map<uint32_t,SiPixelRawDataErrorModule*>::iterator struct_iter2;
133  for (struct_iter = thePixelStructure.begin() ; struct_iter != thePixelStructure.end() ; struct_iter++) {
134 
135  int numberOfModuleErrors = (*struct_iter).second->fill(*input, &meMapFEDs_, modOn, ladOn, bladeOn);
136  if(DetId( (*struct_iter).first ).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) nEventBPIXModuleErrors = nEventBPIXModuleErrors + numberOfModuleErrors;
137  if(DetId( (*struct_iter).first ).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) nEventFPIXModuleErrors = nEventFPIXModuleErrors + numberOfModuleErrors;
138  //cout<<"NErrors: "<<nEventBPIXModuleErrors<<" "<<nEventFPIXModuleErrors<<endl;
139  nErrors = nErrors + numberOfModuleErrors;
140  //if(nErrors>0) cout<<"MODULES: nErrors: "<<nErrors<<endl;
141  }
142  for (struct_iter2 = theFEDStructure.begin() ; struct_iter2 != theFEDStructure.end() ; struct_iter2++) {
143 
144  int numberOfFEDErrors = (*struct_iter2).second->fillFED(*input, &meMapFEDs_);
145  if((*struct_iter2).first <= 31) nEventBPIXFEDErrors = nEventBPIXFEDErrors + numberOfFEDErrors; // (*struct_iter2).first >= 0, since (*struct_iter2).first is unsigned
146  if((*struct_iter2).first >= 32 && (*struct_iter2).first <= 39) nEventFPIXFEDErrors = nEventFPIXFEDErrors + numberOfFEDErrors;
147  //cout<<"NFEDErrors: "<<nEventBPIXFEDErrors<<" "<<nEventFPIXFEDErrors<<endl;
148  nErrors = nErrors + numberOfFEDErrors;
149  //if(nErrors>0) cout<<"FEDS: nErrors: "<<nErrors<<endl;
150  }
151  if(byLumiErrors){
153  //cout<<"NErrors: "<<nEventBPIXModuleErrors<<" "<<nEventFPIXModuleErrors<<" "<<nEventBPIXFEDErrors<<" "<<nEventFPIXFEDErrors<<endl;
154  if(nEventBPIXModuleErrors+nEventBPIXFEDErrors>0) byLumiErrors->Fill(0,1.);
155  if(nEventFPIXModuleErrors+nEventFPIXFEDErrors>0) byLumiErrors->Fill(1,1.);
156  //cout<<"histo: "<<byLumiErrors->getBinContent(0)<<" "<<byLumiErrors->getBinContent(1)<<" "<<byLumiErrors->getBinContent(2)<<endl;
157  }
158 
159  // Rate of errors per lumi section:
160  if(errorRate) errorRate->Fill(lumiSection, nErrors);
161 
162  // slow down...
163  if(slowDown) usleep(100000);
164 
165 }
void setBinContent(int binx, double content)
set content of bin (1-D)
std::map< uint32_t, SiPixelRawDataErrorModule * > theFEDStructure
edm::EDGetTokenT< edm::DetSetVector< SiPixelRawDataError > > src_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
static std::string const input
Definition: EdmProvDump.cc:44
void Fill(long long x)
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
std::map< uint32_t, SiPixelRawDataErrorModule * > thePixelStructure
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
bool isValid() const
Definition: HandleBase.h:74
Definition: DetId.h:18
edm::EDGetTokenT< FEDRawDataCollection > inputSourceToken_
std::map< std::string, MonitorElement ** > meMapFEDs_
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
void SiPixelRawDataErrorSource::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  ,
edm::EventSetup const &  iSetup 
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 95 of file SiPixelRawDataErrorSource.cc.

References bookMEs().

95  {
96  // Book Monitoring Elements
97  bookMEs(iBooker);
98 }
virtual void bookMEs(DQMStore::IBooker &)
void SiPixelRawDataErrorSource::bookMEs ( DQMStore::IBooker iBooker)
virtual

Create folder tree and book histograms

Create folder tree for errors without detId and book histograms

Definition at line 269 of file SiPixelRawDataErrorSource.cc.

References bladeOn, DQMStore::IBooker::book1D(), byLumiErrors, DQMStore::IBooker::cd(), conf_, DEFINE_FWK_MODULE, errorRate, Exception, fedcounter, edm::ParameterSet::getParameter(), triggerObjects_cff::id, isPIB, isUpgrade, edm::InputTag::label(), ladOn, LogDebug, meErrorType_, meEvtNbr_, meEvtSize_, meFedChLErr_, meFedChNErr_, meFedETypeNErr_, meFullType_, meMapFEDs_, meNErrors_, meTBMMessage_, meTBMType_, modOn, MonitorElement::setAxisTitle(), DQMStore::IBooker::setCurrentFolder(), SiPixelFolderOrganizer::setFedFolder(), MonitorElement::setLumiFlag(), SiPixelFolderOrganizer::setModuleFolder(), TrackRefitter_38T_cff::src, AlCaHLTBitMon_QueryRunRegistry::string, groupFilesInBlocks::temp, theFEDStructure, thePixelStructure, fftjetcommon_cfi::title, and topFolderName_.

Referenced by bookHistograms().

269  {
270  iBooker.setCurrentFolder(topFolderName_+"/EventInfo/DAQContents");
271  char title0[80]; sprintf(title0, "FED isPresent;FED ID;isPresent");
272  fedcounter = iBooker.book1D("fedcounter",title0,40,-0.5,39.5);
273  iBooker.setCurrentFolder(topFolderName_+"/AdditionalPixelErrors");
274  char title[80]; sprintf(title, "By-LumiSection Error counters");
275  byLumiErrors = iBooker.book1D("byLumiErrors",title,2,0.,2.);
277  char title1[80]; sprintf(title1, "Errors per LumiSection;LumiSection;NErrors");
278  errorRate = iBooker.book1D("errorRate",title1,5000,0.,5000.);
279 
280  std::map<uint32_t,SiPixelRawDataErrorModule*>::iterator struct_iter;
281  std::map<uint32_t,SiPixelRawDataErrorModule*>::iterator struct_iter2;
282 
283  SiPixelFolderOrganizer theSiPixelFolder(false);
284 
285  for(struct_iter = thePixelStructure.begin(); struct_iter != thePixelStructure.end(); struct_iter++){
287 
288  if(modOn){
289  if(!theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,0,isUpgrade)) {
290  //std::cout<<"PIB! not booking histograms for non-PIB modules!"<<std::endl;
291  if(!isPIB) throw cms::Exception("LogicError")
292  << "[SiPixelRawDataErrorSource::bookMEs] Creation of DQM folder failed";
293  }
294  }
295 
296  if(ladOn){
297  if(!theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,1,isUpgrade)) {
298  LogDebug ("PixelDQM") << "PROBLEM WITH LADDER-FOLDER\n";
299  }
300  }
301 
302  if(bladeOn){
303  if(!theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,4,isUpgrade)) {
304  LogDebug ("PixelDQM") << "PROBLEM WITH BLADE-FOLDER\n";
305  }
306  }
307 
308  }//for loop
309 
310  for(struct_iter2 = theFEDStructure.begin(); struct_iter2 != theFEDStructure.end(); struct_iter2++){
312  if(!theSiPixelFolder.setFedFolder(iBooker,(*struct_iter2).first)) {
313  throw cms::Exception("LogicError")
314  << "[SiPixelRawDataErrorSource::bookMEs] Creation of DQM folder failed";
315  }
316 
317  }
318 
319  //Booking FED histograms
320  std::string hid;
321  // Get collection name and instantiate Histo Id builder
323  SiPixelHistogramId* theHistogramId = new SiPixelHistogramId( src.label() );
324 
325  for (uint32_t id = 0; id < 40; id++){
326  char temp [50];
327  sprintf( temp, (topFolderName_+"/AdditionalPixelErrors/FED_%d").c_str(),id);
328  iBooker.cd(temp);
329  // Types of errors
330  hid = theHistogramId->setHistoId("errorType",id);
331  meErrorType_[id] = iBooker.book1D(hid,"Type of errors",15,24.5,39.5);
332  meErrorType_[id]->setAxisTitle("Type of errors",1);
333  // Number of errors
334  hid = theHistogramId->setHistoId("NErrors",id);
335  meNErrors_[id] = iBooker.book1D(hid,"Number of errors",36,0.,36.);
336  meNErrors_[id]->setAxisTitle("Number of errors",1);
337  // Type of FIFO full (errorType = 28). FIFO 1 is 1-5 (where fullType = channel of FIFO 1),
338  // fullType = 6 signifies FIFO 2 nearly full, 7 signifies trigger FIFO nearly full, 8
339  // indicates an unexpected result
340  hid = theHistogramId->setHistoId("fullType",id);
341  meFullType_[id] = iBooker.book1D(hid,"Type of FIFO full",7,0.5,7.5);
342  meFullType_[id]->setAxisTitle("FIFO type",1);
343  // For error type 30, the type of problem encoded in the TBM trailer
344  // 0 = stack full, 1 = Pre-cal issued, 2 = clear trigger counter, 3 = sync trigger,
345  // 4 = sync trigger error, 5 = reset ROC, 6 = reset TBM, 7 = no token bit pass
346  hid = theHistogramId->setHistoId("TBMMessage",id);
347  meTBMMessage_[id] = iBooker.book1D(hid,"TBM trailer message",8,-0.5,7.5);
348  meTBMMessage_[id]->setAxisTitle("TBM message",1);
349  // For error type 30, the type of problem encoded in the TBM error trailer 0 = none
350  // 1 = data stream too long, 2 = FSM errors, 3 = invalid # of ROCs, 4 = multiple
351  hid = theHistogramId->setHistoId("TBMType",id);
352  meTBMType_[id] = iBooker.book1D(hid,"Type of TBM trailer",5,-0.5,4.5);
353  meTBMType_[id]->setAxisTitle("TBM Type",1);
354  // For error type 31, the event number of the TBM header with the error
355  hid = theHistogramId->setHistoId("EvtNbr",id);
356  meEvtNbr_[id] = iBooker.book1D(hid,"Event number",1,0,1);
357  // For errorType = 34, datastream size according to error word
358  hid = theHistogramId->setHistoId("evtSize",id);
359  meEvtSize_[id] = iBooker.book1D(hid,"Event size",1,0,1);
360  //
361  hid = theHistogramId->setHistoId("FedChNErr",id);
362  meFedChNErr_[id] = iBooker.book1D(hid,"Number of errors per FED channel",37,0,37);
363  meFedChNErr_[id]->setAxisTitle("FED channel",1);
364  //
365  hid = theHistogramId->setHistoId("FedChLErr",id);
366  meFedChLErr_[id] = iBooker.book1D(hid,"Last error per FED channel",37,0,37);
367  meFedChLErr_[id]->setAxisTitle("FED channel",1);
368  //
369  hid = theHistogramId->setHistoId("FedETypeNErr", id);
370  meFedETypeNErr_[id] = iBooker.book1D(hid,"Number of errors per type",21,0,21);
371  meFedETypeNErr_[id]->setAxisTitle("Error type",1);
372  }
373  //Add the booked histograms to the histogram map for booking
374  meMapFEDs_["meErrorType_"] = meErrorType_;
375  meMapFEDs_["meNErrors_"] = meNErrors_;
376  meMapFEDs_["meFullType_"] = meFullType_;
377  meMapFEDs_["meTBMMessage_"] = meTBMMessage_;
378  meMapFEDs_["meTBMType_"] = meTBMType_;
379  meMapFEDs_["meEvtNbr_"] = meEvtNbr_;
380  meMapFEDs_["meEvtSize_"] = meEvtSize_;
381  meMapFEDs_["meFedChNErr_"] = meFedChNErr_;
382  meMapFEDs_["meFedChLErr_"] = meFedChLErr_;
383  meMapFEDs_["meFedETypeNErr_"] = meFedETypeNErr_;
384 
385  //cout<<"...leaving SiPixelRawDataErrorSource::bookMEs now! "<<endl;
386 }
#define LogDebug(id)
T getParameter(std::string const &) const
std::map< uint32_t, SiPixelRawDataErrorModule * > theFEDStructure
MonitorElement * meFedETypeNErr_[40]
void setLumiFlag()
this ME is meant to be stored for each luminosity section
std::map< uint32_t, SiPixelRawDataErrorModule * > thePixelStructure
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
std::string const & label() const
Definition: InputTag.h:36
std::map< std::string, MonitorElement ** > meMapFEDs_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void SiPixelRawDataErrorSource::buildStructure ( edm::EventSetup const &  )
virtual

Definition at line 170 of file SiPixelRawDataErrorSource.cc.

References PixelEndcapName::bladeName(), TrackerGeometry::detsPXB(), TrackerGeometry::detsPXF(), PixelEndcapName::diskName(), l1t::stage2::layer2::fedId, edm::EventSetup::get(), PixelEndcapName::halfCylinder(), isPIB, isUpgrade, LogDebug, RecoTauDiscriminantConfiguration::mask, FEDNumbering::MAXSiPixelFEDID, FEDNumbering::MINSiPixelFEDID, trackingPlots::ncols, PixelEndcapName::pannelName(), PixelEndcapName::plaquetteName(), edm::ESHandle< T >::product(), DetId::rawId(), PixelGeomDetUnit::specificTopology(), AlCaHLTBitMon_QueryRunRegistry::string, theFEDStructure, and thePixelStructure.

Referenced by dqmBeginRun().

170  {
171 
172  LogInfo ("PixelDQM") <<" SiPixelRawDataErrorSource::buildStructure" ;
173 
174 
176  edm::ESHandle<TrackerTopology> tTopoHandle;
177 
178  iSetup.get<TrackerDigiGeometryRecord>().get( pDD );
179  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
180 
181  const TrackerTopology *pTT = tTopoHandle.product();
182 
183 
184  LogVerbatim ("PixelDQM") << " *** Geometry node for TrackerGeom is "<<&(*pDD)<<std::endl;
185  LogVerbatim ("PixelDQM") << " *** I have " << pDD->detsPXB().size() <<" barrel pixel detectors"<<std::endl;
186  LogVerbatim ("PixelDQM") << " *** I have " << pDD->detsPXF().size() <<" endcap pixel detectors"<<std::endl;
187  //LogVerbatim ("PixelDQM") << " *** I have " << pDD->detTypes().size() <<" types"<<std::endl;
188 
189  for(TrackerGeometry::DetContainer::const_iterator it = pDD->detsPXB().begin(); it != pDD->detsPXB().end(); it++){
190 
191  const GeomDetUnit* geoUnit = dynamic_cast<const GeomDetUnit*>(*it);
192  //check if it is a detUnit
193  if ( geoUnit == nullptr )
194  LogError ("PixelDQM") << "Pixel GeomDet is not a GeomDetUnit!" << std::endl;
195  const PixelGeomDetUnit * pixDet = dynamic_cast<const PixelGeomDetUnit*>(geoUnit);
196  int nrows = (pixDet->specificTopology()).nrows();
197  int ncols = (pixDet->specificTopology()).ncolumns();
198 
199  if(isPIB) continue;
200  DetId detId = (*it)->geographicalId();
201  LogDebug ("PixelDQM") << " ---> Adding Barrel Module " << detId.rawId() << endl;
202  uint32_t id = detId();
203  SiPixelRawDataErrorModule* theModule = new SiPixelRawDataErrorModule(id, ncols, nrows);
204  thePixelStructure.insert(pair<uint32_t,SiPixelRawDataErrorModule*> (id,theModule));
205 
206  }
207 
208 
209  for(TrackerGeometry::DetContainer::const_iterator it = pDD->detsPXF().begin(); it != pDD->detsPXF().end(); it++){
210 
211  const GeomDetUnit* geoUnit = dynamic_cast<const GeomDetUnit*>(*it);
212  //check if it is a detUnit
213  if ( geoUnit == nullptr )
214  LogError ("PixelDQM") << "Pixel GeomDet is not a GeomDetUnit!" << std::endl;
215  const PixelGeomDetUnit * pixDet = dynamic_cast<const PixelGeomDetUnit*>(geoUnit);
216  int nrows = (pixDet->specificTopology()).nrows();
217  int ncols = (pixDet->specificTopology()).ncolumns();
218 
219  DetId detId = (*it)->geographicalId();
220  LogDebug ("PixelDQM") << " ---> Adding Endcap Module " << detId.rawId() << endl;
221  uint32_t id = detId();
222  SiPixelRawDataErrorModule* theModule = new SiPixelRawDataErrorModule(id, ncols, nrows);
223 
225  int disk = PixelEndcapName(DetId(id), pTT, isUpgrade).diskName();
226  int blade = PixelEndcapName(DetId(id), pTT, isUpgrade).bladeName();
227  int panel = PixelEndcapName(DetId(id), pTT, isUpgrade).pannelName();
229 
230  char sside[80]; sprintf(sside, "HalfCylinder_%i",side);
231  char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
232  char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
233  char spanel[80]; sprintf(spanel, "Panel_%i",panel);
234  char smodule[80];sprintf(smodule,"Module_%i",module);
235  std::string side_str = sside;
236  std::string disk_str = sdisk;
237  bool mask = side_str.find("HalfCylinder_1")!=string::npos||
238  side_str.find("HalfCylinder_2")!=string::npos||
239  side_str.find("HalfCylinder_4")!=string::npos||
240  disk_str.find("Disk_2")!=string::npos;
241  // clutch to take all of FPIX, but no BPIX:
242  mask = false;
243  if(isPIB && mask) continue;
244 
245  thePixelStructure.insert(pair<uint32_t,SiPixelRawDataErrorModule*> (id,theModule));
246 
247  }
248 
249  LogDebug ("PixelDQM") << " ---> Adding Module for Additional Errors " << endl;
251 
252  fedIds.first = 0;
253  fedIds.second = 39;
254 
255  for (int fedId = fedIds.first; fedId <= fedIds.second; fedId++) {
256 
257  //std::cout<<"Adding FED module: "<<fedId<<std::endl;
258  uint32_t id = static_cast<uint32_t> (fedId);
260  theFEDStructure.insert(pair<uint32_t,SiPixelRawDataErrorModule*> (id,theModule));
261 
262  }
263 
264  LogInfo ("PixelDQM") << " *** Pixel Structure Size " << thePixelStructure.size() << endl;
265 }
#define LogDebug(id)
int plaquetteName() const
plaquetteId (in pannel)
std::map< uint32_t, SiPixelRawDataErrorModule * > theFEDStructure
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:47
int bladeName() const
blade id
std::map< uint32_t, SiPixelRawDataErrorModule * > thePixelStructure
const DetContainer & detsPXB() const
Definition: DetId.h:18
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
int pannelName() const
pannel id
const DetContainer & detsPXF() const
int diskName() const
disk id
HalfCylinder halfCylinder() const
T const * product() const
Definition: ESHandle.h:86
Definition: vlib.h:208
void SiPixelRawDataErrorSource::dqmBeginRun ( const edm::Run ,
edm::EventSetup const &   
)
override

Definition at line 80 of file SiPixelRawDataErrorSource.cc.

References bladeOn, buildStructure(), eventNo, firstRun, ladOn, and modOn.

80  {
81 
82  LogInfo ("PixelDQM") << " SiPixelRawDataErrorSource::beginRun - Initialisation ... " << std::endl;
83  LogInfo ("PixelDQM") << "Mod/Lad/Blade " << modOn << "/" << ladOn << "/" << bladeOn << std::endl;
84 
85  if(firstRun){
86  eventNo = 0;
87 
88  firstRun = false;
89  }
90 
91  // Build map
92  buildStructure(iSetup);
93 }
virtual void buildStructure(edm::EventSetup const &)

Member Data Documentation

bool SiPixelRawDataErrorSource::bladeOn
private

Definition at line 78 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

MonitorElement* SiPixelRawDataErrorSource::byLumiErrors
private

Definition at line 84 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), and bookMEs().

edm::ParameterSet SiPixelRawDataErrorSource::conf_
private

Definition at line 68 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs(), and SiPixelRawDataErrorSource().

MonitorElement* SiPixelRawDataErrorSource::errorRate
private

Definition at line 85 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), and bookMEs().

int SiPixelRawDataErrorSource::eventNo
private

Definition at line 80 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), and dqmBeginRun().

MonitorElement* SiPixelRawDataErrorSource::fedcounter
private

Definition at line 86 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), and bookMEs().

bool SiPixelRawDataErrorSource::firstRun
private

Definition at line 83 of file SiPixelRawDataErrorSource.h.

Referenced by dqmBeginRun(), and SiPixelRawDataErrorSource().

edm::EDGetTokenT<FEDRawDataCollection> SiPixelRawDataErrorSource::inputSourceToken_
private

Definition at line 70 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), and SiPixelRawDataErrorSource().

bool SiPixelRawDataErrorSource::isPIB
private

Definition at line 73 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs(), and buildStructure().

bool SiPixelRawDataErrorSource::isUpgrade
private

Definition at line 79 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs(), and buildStructure().

bool SiPixelRawDataErrorSource::ladOn
private

Definition at line 77 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

MonitorElement* SiPixelRawDataErrorSource::meErrorType_[40]
private

Definition at line 88 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meEvtNbr_[40]
private

Definition at line 93 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meEvtSize_[40]
private

Definition at line 94 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meFedChLErr_[40]
private

Definition at line 97 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meFedChNErr_[40]
private

Definition at line 96 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meFedETypeNErr_[40]
private

Definition at line 98 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meFullType_[40]
private

Definition at line 90 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

std::map<std::string,MonitorElement**> SiPixelRawDataErrorSource::meMapFEDs_
private

Definition at line 100 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), and bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meNErrors_[40]
private

Definition at line 89 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meTBMMessage_[40]
private

Definition at line 91 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

MonitorElement* SiPixelRawDataErrorSource::meTBMType_[40]
private

Definition at line 92 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs().

bool SiPixelRawDataErrorSource::modOn
private

Definition at line 76 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

bool SiPixelRawDataErrorSource::reducedSet
private

Definition at line 75 of file SiPixelRawDataErrorSource.h.

bool SiPixelRawDataErrorSource::saveFile
private

Definition at line 72 of file SiPixelRawDataErrorSource.h.

bool SiPixelRawDataErrorSource::slowDown
private

Definition at line 74 of file SiPixelRawDataErrorSource.h.

Referenced by analyze().

edm::EDGetTokenT<edm::DetSetVector<SiPixelRawDataError> > SiPixelRawDataErrorSource::src_
private

Definition at line 69 of file SiPixelRawDataErrorSource.h.

Referenced by analyze().

std::map<uint32_t,SiPixelRawDataErrorModule*> SiPixelRawDataErrorSource::theFEDStructure
private

Definition at line 82 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), bookMEs(), and buildStructure().

std::map<uint32_t,SiPixelRawDataErrorModule*> SiPixelRawDataErrorSource::thePixelStructure
private

Definition at line 81 of file SiPixelRawDataErrorSource.h.

Referenced by analyze(), bookMEs(), and buildStructure().

std::string SiPixelRawDataErrorSource::topFolderName_
private

Definition at line 71 of file SiPixelRawDataErrorSource.h.

Referenced by bookMEs(), and SiPixelRawDataErrorSource().