test
CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RawTask.cc
Go to the documentation of this file.
2 
3 
4 using namespace hcaldqm;
5 using namespace hcaldqm::constants;
6 
8  DQTask(ps)
9 {
11  edm::InputTag("rawDataCollector"));
13  edm::InputTag("hcalDigis"));
14  _calibProcessing = ps.getUntrackedParameter<bool>("calibProcessing",
15  false);
16  _thresh_calib_nbadq = ps.getUntrackedParameter<int>("thresh_calib_nbadq",
17  1000);
18 
19  _tokFEDs = consumes<FEDRawDataCollection>(_tagFEDs);
20  _tokReport = consumes<HcalUnpackerReport>(_tagReport);
21 
22  _vflags.resize(nRawFlag);
23  _vflags[fEvnMsm]=flag::Flag("EvnMsm");
24  _vflags[fBcnMsm]=flag::Flag("BcnMsm");
25  _vflags[fBadQ]=flag::Flag("BadQ");
26  _vflags[fOrnMsm]=flag::Flag("OrnMsm");
27 }
28 
30  edm::Run const& r, edm::EventSetup const& es)
31 {
32  DQTask::bookHistograms(ib,r,es);
33 
34  // GET WHAT YOU NEED
36  es.get<HcalDbRecord>().get(dbs);
37  _emap = dbs->getHcalMapping();
38  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
39  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
40  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
41  std::vector<uint32_t> vVME;
42  std::vector<uint32_t> vuTCA;
43  std::vector<uint32_t> vhashFEDsVME;
44  std::vector<uint32_t> vhashFEDsuTCA;
48  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
50  vVME);
52  vuTCA);
53 
54  for (std::vector<int>::const_iterator it=vFEDsVME.begin();
55  it!=vFEDsVME.end(); ++it)
56  {
57  vhashFEDsVME.push_back(HcalElectronicsId(constants::FIBERCH_MIN,
59  (*it)-constants::FED_VME_MIN).rawId());
62  (*it)-constants::FED_VME_MIN).rawId());
63  }
64  for (std::vector<int>::const_iterator it=vFEDsuTCA.begin();
65  it!=vFEDsuTCA.end(); ++it)
66  {
67  vhashFEDsuTCA.push_back(HcalElectronicsId(
69  FIBERCH_MIN, false).rawId());
70  _vhashFEDs.push_back(HcalElectronicsId(
72  FIBERCH_MIN, false).rawId());
73  }
75  hcaldqm::hashfunctions::fFED, vhashFEDsVME);
77  hcaldqm::hashfunctions::fFED, vhashFEDsuTCA);
78 
79  // INITIALIZE FIRST
82  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
87  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
92  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
97  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
102  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
107  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
110 
111  // Bad Quality
112  _cBadQuality_FEDVME.initialize(_name, "BadQuality",
117  _cBadQuality_FEDuTCA.initialize(_name, "BadQuality",
122  _cBadQualityvsLS.initialize(_name, "BadQualityvsLS",
125  _cBadQualityvsBX.initialize(_name, "BadQualityvsBX",
128  _cBadQuality_depth.initialize(_name, "BadQuality",
133 
134  // INITIALIZE HISTOGRAMS to be used in Online Only
135  if (_ptype==fOnline)
136  {
141  _cSummaryvsLS_FED.initialize(_name, "SummaryvsLS",
146  _cSummaryvsLS.initialize(_name, "SummaryvsLS",
150  // FED Size vs LS
151  _cDataSizevsLS_FED.initialize(_name, "DataSizevsLS",
155  }
156 
157  // BOOK HISTOGRAMS
164 
165 
171 
172  // BOOK HISTOGRAMS to be used in ONLINE ONLY!
173  if (_ptype==fOnline)
174  {
182  }
183 
184  // FOR OFFLINE PROCESSING MARK THESE HISTOGRAMS AS LUMI BASED
185  if (_ptype==fOffline)
186  {
192  }
193 
194  // initialize hash map
196 }
197 
199 {
200  // base reset
201  DQTask::_resetMonitors(uf);
202 }
203 
204 /* virtual */ void RawTask::_process(edm::Event const& e,
205  edm::EventSetup const&)
206 {
209  if (!e.getByToken(_tokFEDs, craw))
210  _logger.dqmthrow("Collection FEDRawDataCollection isn't available"+
211  _tagFEDs.label()+" " +_tagFEDs.instance());
212  if (!e.getByToken(_tokReport, creport))
213  _logger.dqmthrow("Collection HcalUnpackerReport isn't available"+
215 
216  // extract some info
217  int bx = e.bunchCrossing();
218 
219  /*
220  * For Calibration/Abort Gap Processing
221  * check if the #channels taht are bad from the unpacker
222  * is > 5000. If it is skip...
223  */
224  if (_calibProcessing)
225  {
226  int nbadq = creport->badQualityDigis();
227  if (nbadq>=_thresh_calib_nbadq)
228  return;
229  }
230 
231  int nn = 0;
232  // loop thru and fill the detIds with bad quality
233  // NOTE: Calibration Channels are skipped!
234  // TODO: Include for Online Calibration Channels marked as bad
235  // a comment below is left on purpose!
236  //_cBadQualityvsBX.fill(bx, creport->badQualityDigis());
237  for (std::vector<DetId>::const_iterator it=creport->bad_quality_begin();
238  it!=creport->bad_quality_end(); ++it)
239  {
240  // skip non HCAL det ids
241  if (!HcalGenericDetId(*it).isHcalDetId())
242  continue;
243 
244  // skip those that are of bad quality from conditions
245  // Masked or Dead
246  if (_xQuality.exists(HcalDetId(*it)))
247  {
248  HcalChannelStatus cs(it->rawId(), _xQuality.get(HcalDetId(*it)));
249  if (cs.isBitSet(HcalChannelStatus::HcalCellMask) ||
251  continue;
252  }
253 
254  nn++;
257  // ONLINE ONLY!
258  if (_ptype==fOnline)
259  _xBadQLS.get(eid)++;
260  if (eid.isVMEid())
261  {
262  if (_filter_FEDsVME.filter(eid))
263  continue;
265  }
266  else
267  {
268  if (_filter_FEDsuTCA.filter(eid))
269  continue;
271  }
272  }
274  _cBadQualityvsBX.fill(bx, nn);
275 
276  for (int fed=FEDNumbering::MINHCALFEDID;
277  fed<=FEDNumbering::MAXHCALuTCAFEDID; fed++)
278  {
279  // skip nonHCAL FEDs
280  if ((fed>FEDNumbering::MAXHCALFEDID &&
283  continue;
284  FEDRawData const& raw = craw->FEDData(fed);
285  if (raw.size()<constants::RAW_EMPTY)
286  continue;
287 
288  if (fed<=FEDNumbering::MAXHCALFEDID) // VME
289  {
290  HcalDCCHeader const* hdcc = (HcalDCCHeader const*)(raw.data());
291  if (!hdcc)
292  continue;
293 
294  uint32_t bcn = hdcc->getBunchId();
295  uint32_t orn = hdcc->getOrbitNumber() & 0x1F; // LS 5 bits only
296  uint32_t evn = hdcc->getDCCEventNumber();
298 
299  /* online only */
300  if (_ptype==fOnline)
301  {
304  if (_filter_FEDsVME.filter(eid))
305  continue;
306  _cDataSizevsLS_FED.fill(eid, _currentLS, double(raw.size())/1024.);
307  }
308 
309  // iterate over spigots
310  HcalHTRData htr;
311  for (int is=0; is<HcalDCCHeader::SPIGOT_COUNT; is++)
312  {
313  int r = hdcc->getSpigotData(is, htr, raw.size());
314  if (r!=0 || !htr.check())
315  continue;
318  is, dccId);
319  if (_filter_FEDsVME.filter(eid))
320  continue;
321 
322  uint32_t htr_evn = htr.getL1ANumber();
323  uint32_t htr_orn = htr.getOrbitNumber();
324  uint32_t htr_bcn = htr.getBunchNumber();
325  bool qevn = (htr_evn!=evn);
326  bool qbcn = (htr_bcn!=bcn);
327  bool qorn = (htr_orn!=orn);
328  if (qevn)
329  {
331 
333  _xEvnMsmLS.get(eid)++;
334  }
335  if (qorn)
336  {
338 
340  _xOrnMsmLS.get(eid)++;
341  }
342  if (qbcn)
343  {
345 
347  _xBcnMsmLS.get(eid)++;
348  }
349  }
350  }
351  else // uTCA
352  {
353  hcal::AMC13Header const* hamc13 = (hcal::AMC13Header const*)
354  raw.data();
355  if (!hamc13)
356  continue;
357 
358  /* online only */
359  if (_ptype==fOnline)
360  {
363  if (_filter_FEDsuTCA.filter(eid))
364  continue;
365  _cDataSizevsLS_FED.fill(eid, _currentLS, double(raw.size())/1024.);
366  }
367 
368  uint32_t bcn = hamc13->bunchId();
369  uint32_t orn = hamc13->orbitNumber() & 0xFFFF; // LS 16bits only
370  uint32_t evn = hamc13->l1aNumber();
371  int namc = hamc13->NAMC();
372 
373  for (int iamc=0; iamc<namc; iamc++)
374  {
375  int slot = hamc13->AMCSlot(iamc);
376  int crate = hamc13->AMCId(iamc)&0xFF;
377  HcalElectronicsId eid(crate, slot, FIBER_uTCA_MIN1,
378  FIBERCH_MIN, false);
379  if (_filter_FEDsuTCA.filter(eid))
380  continue;
381  HcalUHTRData uhtr(hamc13->AMCPayload(iamc),
382  hamc13->AMCSize(iamc));
383 
384  uint32_t uhtr_evn = uhtr.l1ANumber();
385  uint32_t uhtr_bcn = uhtr.bunchNumber();
386  uint32_t uhtr_orn = uhtr.orbitNumber();
387  bool qevn = (uhtr_evn!=evn);
388  bool qbcn = (uhtr_bcn!=bcn);
389  bool qorn = (uhtr_orn!=orn);
390  if (qevn)
391  {
393 
394  if (_ptype==fOnline)
395  _xEvnMsmLS.get(eid)++;
396  }
397  if (qorn)
398  {
400 
401  if (_ptype==fOnline)
402  _xOrnMsmLS.get(eid)++;
403  }
404  if (qbcn)
405  {
407 
408  if (_ptype==fOnline)
409  _xBcnMsmLS.get(eid)++;
410  }
411  }
412  }
413  }
414 }
415 
417  edm::EventSetup const& es)
418 {
419  DQTask::beginLuminosityBlock(lb, es);
420 
421 // _cBadQualityvsLS.extendAxisRange(_currentLS);
422 
423  // ONLINE ONLY!
424  if (_ptype!=fOnline)
425  return;
426 // _cSummaryvsLS_FED.extendAxisRange(_currentLS);
427 // _cSummaryvsLS.extendAxisRange(_currentLS);
428 
429 }
430 
432  edm::EventSetup const& es)
433 {
434  if (_ptype!=fOnline)
435  return;
436 
437  //
438  // GENERATE STATUS ONLY FOR ONLINE!
439  //
440  for (std::vector<uint32_t>::const_iterator it=_vhashFEDs.begin();
441  it!=_vhashFEDs.end(); ++it)
442  {
443  flag::Flag fSum("RAW");
445 
446  std::vector<uint32_t>::const_iterator cit=std::find(
447  _vcdaqEids.begin(), _vcdaqEids.end(), *it);
448  if (cit==_vcdaqEids.end())
449  {
450  // not @cDAQ
451  for (uint32_t iflag=0; iflag<_vflags.size(); iflag++)
452  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag),
453  int(flag::fNCDAQ));
455  continue;
456  }
457 
458  // FED is @cDAQ
461  {
462  if (_xEvnMsmLS.get(eid)>0)
463  _vflags[fEvnMsm]._state = flag::fBAD;
464  else
465  _vflags[fEvnMsm]._state = flag::fGOOD;
466  if (_xBcnMsmLS.get(eid)>0)
467  _vflags[fBcnMsm]._state = flag::fBAD;
468  else
469  _vflags[fBcnMsm]._state = flag::fGOOD;
470  if (_xOrnMsmLS.get(eid)>0)
471  _vflags[fOrnMsm]._state = flag::fBAD;
472  else
473  _vflags[fOrnMsm]._state = flag::fGOOD;
474  if (double(_xBadQLS.get(eid))>double(12*_evsPerLS))
475  _vflags[fBadQ]._state = flag::fBAD;
476  else if (_xBadQLS.get(eid)>0)
477  _vflags[fBadQ]._state = flag::fPROBLEMATIC;
478  else
479  _vflags[fBadQ]._state = flag::fGOOD;
480  }
481 
482  int iflag=0;
483  // iterate over all flags:
484  // - sum them all up in summary flag for this FED
485  // - reset each flag right after using it
486  for (std::vector<flag::Flag>::iterator ft=_vflags.begin();
487  ft!=_vflags.end(); ++ft)
488  {
489  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag),
490  ft->_state);
491  fSum+=(*ft);
492  iflag++;
493 
494  // this is the MUST! We don't keep flags per FED, reset
495  // each one of them after using
496  ft->reset();
497  }
499  }
500 
501  // reset...
503 
504  // in the end always do the DQTask::endLumi
505  DQTask::endLuminosityBlock(lb, es);
506 }
507 
509 
T getUntrackedParameter(std::string const &, T const &) const
hcaldqm::Container2D _cSummaryvsLS_FED
Definition: RawTask.h:92
int const RAW_EMPTY
Definition: Constants.h:218
auto_ptr< ClusterSequence > cs
virtual void initialize(std::string const &folder, Quantity *, Quantity *qy=new ValueQuantity(quantity::fN), int debug=0)
virtual bool exists(HcalDetId const &)
Definition: ContainerXXX.h:267
virtual void setBinContent(HcalDetId const &, int)
Definition: Container2D.cc:235
int const CRATE_VME_MIN
Definition: Constants.h:60
int ib
Definition: cuy.py:660
uint16_t fed2crate(int fed)
Definition: Utilities.cc:12
bool check() const
Check for a good event Requires a minimum length, matching wordcount and length, not an empty event...
Definition: HcalHTRData.cc:62
bool _calibProcessing
Definition: RawTask.h:62
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
Definition: RawTask.cc:29
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: RawTask.h:59
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
UpdateFreq
Definition: DQTask.h:17
State _state
Definition: Flag.h:79
hcaldqm::Container2D _cOrnMsm_ElectronicsuTCA
Definition: RawTask.h:89
int bunchCrossing() const
Definition: EventBase.h:65
int const SPIGOT_MIN
Definition: Constants.h:85
hcaldqm::ContainerXXX< uint32_t > _xEvnMsmLS
Definition: RawTask.h:90
virtual void _process(edm::Event const &, edm::EventSetup const &)
Definition: RawTask.cc:204
virtual void reset()
Definition: ContainerXXX.h:366
int l1aNumber() const
Definition: AMC13Header.h:19
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
int const FIBER_VME_MIN
Definition: Constants.h:90
unsigned int getOrbitNumber() const
Get the HTR orbit number.
Definition: HcalHTRData.cc:324
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
void bookHistograms(fwlite::EventContainer &eventCont)
int const FIBERCH_MIN
Definition: Constants.h:100
int AMCSize(int i) const
Definition: AMC13Header.h:37
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
std::vector< int > getFEDVMEList(HcalElectronicsMap const *)
Definition: Utilities.cc:71
int const SPIGOT_MAX
Definition: Constants.h:86
hcaldqm::Container2D _cBadQuality_depth
Definition: RawTask.h:77
virtual void fill(HcalDetId const &)
Definition: Container2D.cc:59
unsigned int getOrbitNumber() const
Definition: HcalDCCHeader.h:46
hcaldqm::ContainerSingle2D _cSummaryvsLS
Definition: RawTask.h:93
int getBunchId() const
Definition: HcalDCCHeader.h:34
hcaldqm::ContainerXXX< uint32_t > _xBcnMsmLS
Definition: RawTask.h:90
ProcessingType _ptype
Definition: DQModule.h:59
virtual void fill(uint32_t)
Definition: Container1D.cc:82
int bunchId() const
Definition: AMC13Header.h:17
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, int debug=0)
void reset()
Definition: Flag.h:76
virtual void setBinContent(int, int, int)
hcaldqm::filter::HashFilter _filter_FEDsuTCA
Definition: RawTask.h:72
void dqmthrow(std::string const &msg) const
Definition: Logger.h:15
ContainerXXX< uint32_t > _xQuality
Definition: DQTask.h:62
std::vector< uint32_t > _vhashFEDs
Definition: RawTask.h:66
int const FED_VME_MIN
Definition: Constants.h:47
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fN), int debug=0)
Definition: Container2D.cc:32
int const FIBER_uTCA_MIN1
Definition: Constants.h:93
hcaldqm::ContainerXXX< uint32_t > _xOrnMsmLS
Definition: RawTask.h:90
RawTask(edm::ParameterSet const &)
Definition: RawTask.cc:7
Logger _logger
Definition: DQModule.h:70
edm::EDGetTokenT< HcalUnpackerReport > _tokReport
Definition: RawTask.h:44
std::string _name
Definition: DQModule.h:57
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
edm::EDGetTokenT< FEDRawDataCollection > _tokFEDs
Definition: RawTask.h:43
bool isHcalDetId() const
hcaldqm::Container2D _cBadQuality_FEDuTCA
Definition: RawTask.h:76
int const CRATE_uTCA_MIN
Definition: Constants.h:65
hcaldqm::Container2D _cEvnMsm_ElectronicsuTCA
Definition: RawTask.h:87
hcaldqm::filter::HashFilter _filter_uTCA
Definition: RawTask.h:70
int getSourceId() const
Definition: HcalDCCHeader.h:32
unsigned int orbitNumber() const
Definition: AMC13Header.h:23
int _thresh_calib_nbadq
Definition: RawTask.h:63
bool isVMEid() const
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Definition: RawTask.cc:431
hcaldqm::ContainerXXX< uint32_t > _xBadQLS
Definition: RawTask.h:90
bool isFEDHBHE(HcalElectronicsId const &)
Definition: Utilities.cc:124
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
Definition: Container2D.cc:895
virtual void book(HcalElectronicsMap const *)
Definition: ContainerXXX.h:99
hcaldqm::Container2D _cBadQuality_FEDVME
Definition: RawTask.h:75
virtual void initialize(std::string const &folder, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fN), int debug=0)
virtual void _resetMonitors(hcaldqm::UpdateFreq)
Definition: RawTask.cc:198
const T & get() const
Definition: EventSetup.h:56
hcaldqm::Container2D _cBcnMsm_ElectronicsVME
Definition: RawTask.h:85
uint32_t l1ANumber() const
Get the HTR event number.
Definition: HcalUHTRData.h:104
hcaldqm::filter::HashFilter _filter_FEDsVME
Definition: RawTask.h:71
std::string const & label() const
Definition: InputTag.h:36
hcaldqm::ContainerSingleProf1D _cBadQualityvsLS
Definition: RawTask.h:79
hcaldqm::Container2D _cOrnMsm_ElectronicsVME
Definition: RawTask.h:86
edm::InputTag _tagFEDs
Definition: RawTask.h:41
std::vector< hcaldqm::flag::Flag > _vflags
Definition: RawTask.h:47
int NAMC() const
Definition: AMC13Header.h:25
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
hcaldqm::Container2D _cBcnMsm_ElectronicsuTCA
Definition: RawTask.h:88
virtual STDTYPE & get(HcalDetId const &)
Definition: ContainerXXX.h:249
int AMCSlot(int i) const
Definition: AMC13Header.h:33
const uint64_t * AMCPayload(int i) const
Definition: AMC13Header.cc:4
virtual void setLumiFlag()
hcaldqm::ContainerProf1D _cDataSizevsLS_FED
Definition: RawTask.h:81
unsigned int getBunchNumber() const
Get the HTR bunch number.
Definition: HcalHTRData.h:115
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:47
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:97
virtual bool filter(HcalDetId const &) const
Definition: HashFilter.cc:36
std::string _subsystem
Definition: DQModule.h:64
edm::InputTag _tagReport
Definition: RawTask.h:42
bool isFEDHO(HcalElectronicsId const &)
Definition: Utilities.cc:171
hcaldqm::filter::HashFilter _filter_VME
Definition: RawTask.h:69
hcaldqm::ContainerSingleProf1D _cBadQualityvsBX
Definition: RawTask.h:80
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:65
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:91
virtual void initialize(FilterType ftype, HashType htype, std::vector< uint32_t > const &)
Definition: HashFilter.cc:26
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Definition: RawTask.cc:416
uint16_t AMCId(int i) const
Definition: AMC13Header.h:31
unsigned int getL1ANumber() const
Get the HTR event number.
Definition: HcalHTRData.h:111
unsigned dccId(DetId const &)
hcaldqm::Container2D _cEvnMsm_ElectronicsVME
Definition: RawTask.h:84
unsigned long getDCCEventNumber() const
Definition: HcalDCCHeader.h:36
Readout chain identification for Hcal.
std::string const & instance() const
Definition: InputTag.h:37
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:146
int const SLOT_uTCA_MIN
Definition: Constants.h:72
Definition: Run.h:43
HcalElectronicsMap const * _emap
Definition: RawTask.h:58