CMS 3D CMS Logo

DQTask.cc
Go to the documentation of this file.
2 
3 namespace hcaldqm
4 {
5  using namespace constants;
7  DQModule(ps),
8  _cEvsTotal(_name, "EventsTotal"),
9  _cEvsPerLS(_name, "EventsPerLS"),
10  _cRunKeyVal(_name, "RunKeyValue"),
11  _cRunKeyName(_name, "RunKeyName"),
12  _cProcessingTypeName(_name, "ProcessingType"),
13  _procLSs(0)
14  {
15  // tags and Tokens
17  edm::InputTag("rawDataCollector"));
18  _tokRaw = consumes<FEDRawDataCollection>(_tagRaw);
19  }
20 
21  /*
22  * By design, all the sources will ahve this function inherited and will
23  * never override.
24  */
25  /* virtual */ void DQTask::analyze(edm::Event const& e,
26  edm::EventSetup const& es)
27  {
28  this->_resetMonitors(fEvent);
29  _logger.debug(_name+" processing");
30  if (!this->_isApplicable(e))
31  return;
32 
35  this->_process(e, es);
36  }
37 
39  edm::Run const& r,
40  edm::EventSetup const& es)
41  {
42  // initialize some containers to be used by all modules
44 
45  // get the run info FEDs - FEDs registered at cDAQ
46  // and determine if there are any HCAL FEDs in.
47  // push them as ElectronicsIds into the vector
48  if (auto runInfoRec = es.tryToGet<RunInfoRcd>())
49  {
51  runInfoRec->get(ri);
52  std::vector<int> vfeds= ri->m_fed_in;
53  for (std::vector<int>::const_iterator it=vfeds.begin();
54  it!=vfeds.end(); ++it)
55  {
56  if (*it>=constants::FED_VME_MIN && *it<=FED_VME_MAX)
57  _vcdaqEids.push_back(HcalElectronicsId(
60  (*it)-FED_VME_MIN).rawId());
61  else if (*it>=constants::FED_uTCA_MIN &&
63  {
64  std::pair<uint16_t, uint16_t> cspair = utilities::fed2crate(*it);
65  _vcdaqEids.push_back(HcalElectronicsId(
66  cspair.first, cspair.second,
67  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
68  }
69  }
70  }
71 
72  // get the Channel Quality Status for all the channels
74  es.get<HcalChannelQualityRcd>().get("withTopo", hcq);
75  const HcalChannelQuality *cq = hcq.product();
76  std::vector<DetId> detids = cq->getAllChannels();
77  for (std::vector<DetId>::const_iterator it=detids.begin();
78  it!=detids.end(); ++it)
79  {
80  // if unknown skip
81  if (HcalGenericDetId(*it).genericSubdet()==
83  continue;
84 
85  if (HcalGenericDetId(*it).isHcalDetId())
86  {
87  HcalDetId did(*it);
88  uint32_t mask = (cq->getValues(did))->getValue();
89  if (mask!=0)
90  {
91  _xQuality.push(did, mask);
92  }
93  }
94  }
95 
96  // book some base guys
102 
103  // fill what you can now
107 
108  // Load conditions and emap
109  es.get<HcalDbRecord>().get(_dbService);
111  }
112 
113  /* virtual */ void DQTask::dqmBeginRun(edm::Run const& r,
114  edm::EventSetup const& es)
115  {
116  this->_resetMonitors(fEvent);
117  this->_resetMonitors(f1LS);
118  this->_resetMonitors(f10LS);
119  this->_resetMonitors(f50LS);
120  this->_resetMonitors(f100LS);
121  }
122 
123  /* virtual */ void DQTask::beginLuminosityBlock(
124  edm::LuminosityBlock const& lb,
125  edm::EventSetup const& es)
126  {
128  this->_resetMonitors(f1LS);
129 
130  if (_procLSs%10==0)
131  this->_resetMonitors(f10LS);
132  if (_procLSs%50==0)
133  this->_resetMonitors(f50LS);
134  if (_procLSs%100==0)
135  this->_resetMonitors(f100LS);
136 
137  }
138 
139  /* virtual */ void DQTask::endLuminosityBlock(
140  edm::LuminosityBlock const& lb,
141  edm::EventSetup const& es)
142  {
143  _procLSs++;
144  }
145 
146  /* virtual */ void DQTask::_resetMonitors(UpdateFreq uf)
147  {
148  // reset per event
149  switch (uf)
150  {
151  case fEvent:
152  break;
153  case f1LS:
154  _evsPerLS = 0;
155  break;
156  case f10LS:
157  break;
158  case f50LS:
159  break;
160  case f100LS:
161  break;
162  default:
163  break;
164  }
165  }
166 
167  /* virtual */ int DQTask::_getCalibType(edm::Event const&e)
168  {
169  int calibType = 0;
170 
172  if (!e.getByToken(_tokRaw, craw))
174  "Collection FEDRawDataCollection isn't available "
175  + _tagRaw.label() + " " + _tagRaw.instance());
176 
177  int badFEDs=0;
178  std::vector<int> types(8,0);
179  for (int i=FED_VME_MIN; i<=FED_VME_MAX; i++)
180  {
181  FEDRawData const& fd = craw->FEDData(i);
182  if (fd.size()<24)
183  {
184  badFEDs++;
185  continue;
186  }
187  int cval = (int)((HcalDCCHeader const*)(fd.data()))->getCalibType();
188  if (cval>7)
189  _logger.warn("Unexpected Calib Type in FED " +
190  std::to_string(i));
191  types[cval]++;
192  }
193  for (int i=FED_uTCA_MIN; i<=FED_uTCA_MAX; i++)
194  {
195  FEDRawData const& fd = craw->FEDData(i);
196  if (fd.size()<24)
197  {
198  badFEDs++;
199  continue;
200  }
201  int cval = (int)((HcalDCCHeader const*)(fd.data()))->getCalibType();
202  if (cval>7)
203  _logger.warn("Unexpected Calib Type in FED " +
204  std::to_string(i));
205  types[cval]++;
206  }
207 
208  int max = 0;
209  for (unsigned int ic=0; ic<8; ic++)
210  {
211  if (types[ic]>max)
212  {
213  max = types[ic];
214  calibType = ic;
215  }
216  }
217  if (max!=(FED_VME_NUM+(FED_uTCA_MAX-FED_uTCA_MIN+1)-badFEDs))
218  _logger.warn("Conflicting Calibration Types found. Assigning " +
219  std::to_string(calibType));
220 
221  return calibType;
222  }
223 }
constexpr uint32_t rawId() const
virtual int _getCalibType(edm::Event const &)
Definition: DQTask.cc:167
T getUntrackedParameter(std::string const &, T const &) const
ContainerI _cEvsTotal
Definition: DQTask.h:52
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DQTask.cc:123
std::optional< T > tryToGet() const
Definition: EventSetup.h:87
DQTask(edm::ParameterSet const &)
Definition: DQTask.cc:6
void warn(std::string const &msg) const
Definition: Logger.h:20
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:12
ContainerS _cRunKeyName
Definition: DQTask.h:55
edm::InputTag _tagRaw
Definition: DQTask.h:68
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
void debug(STDTYPE const &msg) const
Definition: Logger.h:31
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
Definition: DQTask.cc:113
edm::EDGetTokenT< FEDRawDataCollection > _tokRaw
Definition: DQTask.h:69
UpdateFreq
Definition: DQTask.h:17
ContainerI _cEvsPerLS
Definition: DQTask.h:53
int const SPIGOT_MIN
Definition: Constants.h:136
virtual void push(HcalDetId const &, STDTYPE)
Definition: ContainerXXX.h:283
int _procLSs
Definition: DQTask.h:59
const Item * getValues(DetId fId, bool throwOnFail=true) const
int const FIBER_VME_MIN
Definition: Constants.h:141
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
int const FED_uTCA_MIN
Definition: Constants.h:103
int const FIBERCH_MIN
Definition: Constants.h:151
virtual bool _isApplicable(edm::Event const &)
Definition: DQTask.h:48
LuminosityBlockNumber_t luminosityBlock() const
int const FED_uTCA_MAX
Definition: Constants.h:105
ProcessingType _ptype
Definition: DQModule.h:59
virtual void _process(edm::Event const &, edm::EventSetup const &)=0
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
virtual void fill(std::string const &x)
Definition: ContainerS.h:26
void dqmthrow(std::string const &msg) const
Definition: Logger.h:15
ContainerXXX< uint32_t > _xQuality
Definition: DQTask.h:62
int const FED_VME_MIN
Definition: Constants.h:98
std::vector< DetId > getAllChannels() const
std::vector< int > m_fed_in
Definition: RunInfo.h:26
virtual void book(DQMStore::IBooker &ib, std::string subsystem="Hcal", std::string aux="")
Definition: ContainerI.h:32
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DQTask.cc:139
int const FIBER_uTCA_MIN1
Definition: Constants.h:144
virtual void fill(int x)
Definition: ContainerI.h:27
Logger _logger
Definition: DQModule.h:70
std::string _name
Definition: DQModule.h:57
virtual void book(DQMStore::IBooker &ib, std::string subsystem="Hcal", std::string aux="")
Definition: ContainerS.h:31
HcalElectronicsMap const * _emap
Definition: DQTask.h:73
bool isHcalDetId() const
int const FED_VME_NUM
Definition: Constants.h:101
std::string const & label() const
Definition: InputTag.h:36
virtual void _resetMonitors(UpdateFreq)
Definition: DQTask.cc:146
edm::ESHandle< HcalDbService > _dbService
Definition: DQTask.h:72
T get() const
Definition: EventSetup.h:68
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
const HcalElectronicsMap * getHcalMapping() const
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: DQTask.cc:38
std::string _subsystem
Definition: DQModule.h:64
std::string _runkeyName
Definition: DQModule.h:63
ContainerS _cProcessingTypeName
Definition: DQTask.h:56
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:65
std::string const pTypeNames[nProcessingType]
Definition: DQModule.h:41
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:89
HcalGenericSubdetector genericSubdet() const
int const FED_VME_MAX
Definition: Constants.h:99
ContainerI _cRunKeyVal
Definition: DQTask.h:54
void analyze(edm::Event const &, edm::EventSetup const &) override
Definition: DQTask.cc:25
T const * product() const
Definition: ESHandle.h:84
Readout chain identification for Hcal.
std::string const & instance() const
Definition: InputTag.h:37
Definition: Run.h:44
ib
Definition: cuy.py:662