CMS 3D CMS Logo

LatencyHistosUsingDb.cc
Go to the documentation of this file.
1 
7 #include <iostream>
8 
9 #define MAXFEDCOARSE 15
10 
11 using namespace sistrip;
12 
13 // -----------------------------------------------------------------------------
16  : CommissioningHistograms(pset.getParameter<edm::ParameterSet>("LatencyParameters"), bei, sistrip::APV_LATENCY),
18  SamplingHistograms(pset.getParameter<edm::ParameterSet>("LatencyParameters"), bei, sistrip::APV_LATENCY) {
19  LogTrace(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
20  << " Constructing object...";
21 }
22 
23 // -----------------------------------------------------------------------------
26  LogTrace(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
27  << " Destructing object...";
28 }
29 
30 // -----------------------------------------------------------------------------
33  if (!db()) {
34  edm::LogWarning(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
35  << " NULL pointer to SiStripConfigDb interface!"
36  << " Aborting upload...";
37  return;
38  }
39 
42  bool upload = update(devices, feds);
43  // Check if new PLL settings are valid
44  if (!upload) {
45  edm::LogWarning(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
46  << " Found invalid PLL settings (coarse > 15)"
47  << " Aborting update to database...";
48  return;
49  }
50 
51  if (doUploadConf()) {
52  // Update APV descriptions with new Latency settings
53  LogTrace(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
54  << " Uploading APV settings to DB...";
56  LogTrace(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
57  << " Upload of APV settings to DB finished!";
58  // Update FED descriptions
59  LogTrace(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
60  << " Uploading FED delays to DB...";
62  LogTrace(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
63  << " Upload of FED delays to DB finished!";
64  } else {
65  edm::LogWarning(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
66  << " TEST only! No APV settings will be uploaded to DB...";
67  }
68 }
69 
70 // -----------------------------------------------------------------------------
74  // Obtain the latency from the analysis object
75  if (data().empty() || !data().begin()->second->isValid()) {
76  edm::LogVerbatim(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
77  << " Updated NO Latency settings. No analysis result available !";
78  return false;
79  }
80 
81  // Compute the minimum coarse delay
82  uint16_t minCoarseDelay = 256;
83  SiStripConfigDb::DeviceDescriptionsV::const_iterator idevice;
84  for (idevice = devices.begin(); idevice != devices.end(); idevice++) {
85  // Check device type
86  if ((*idevice)->getDeviceType() == PLL) {
87  // Cast to retrieve appropriate description object
88  pllDescription* desc = dynamic_cast<pllDescription*>(*idevice);
89  if (desc) {
90  /*
91  // add 1 to aim at 1 and not 0 (just to avoid a special 0 value for security)
92  int delayCoarse = desc->getDelayCoarse() - 1;
93  delayCoarse = delayCoarse < 0 ? 0 : delayCoarse;
94  minCoarseDelay = minCoarseDelay < delayCoarse ? minCoarseDelay : delayCoarse;
95 */
96  int delayCoarse = desc->getDelayCoarse();
97  minCoarseDelay = minCoarseDelay < delayCoarse ? minCoarseDelay : delayCoarse;
98  }
99  }
100  }
101 
102  // Compute latency and PLL shift from the sampling measurement
103  SamplingAnalysis* anal = nullptr;
104  for (CommissioningHistograms::Analysis it = data().begin(); it != data().end(); ++it) {
105  if (dynamic_cast<SamplingAnalysis*>(it->second) &&
106  dynamic_cast<SamplingAnalysis*>(it->second)->granularity() == sistrip::TRACKER)
107  anal = dynamic_cast<SamplingAnalysis*>(it->second);
108  }
109  if (!anal)
110  return false;
111  uint16_t globalLatency = uint16_t(ceil(anal->maximum() / (-25.)));
112  float globalShift = anal->maximum() - (globalLatency * (-25));
113 
114  // Compute latency and PLL shift per partition... this is an option
115  uint16_t latency = globalLatency;
116  float shift[5] = {0.};
117  for (CommissioningHistograms::Analysis it = data().begin(); it != data().end(); ++it) {
118  if (dynamic_cast<SamplingAnalysis*>(it->second) &&
119  dynamic_cast<SamplingAnalysis*>(it->second)->granularity() == sistrip::PARTITION) {
120  anal = dynamic_cast<SamplingAnalysis*>(it->second);
121  latency = uint16_t(ceil(anal->maximum() / (-25.))) > latency ? uint16_t(ceil(anal->maximum() / (-25.))) : latency;
122  }
123  }
124  for (CommissioningHistograms::Analysis it = data().begin(); it != data().end(); ++it) {
125  if (dynamic_cast<SamplingAnalysis*>(it->second) &&
126  dynamic_cast<SamplingAnalysis*>(it->second)->granularity() == sistrip::PARTITION) {
127  anal = dynamic_cast<SamplingAnalysis*>(it->second);
128  shift[SiStripFecKey(anal->fecKey()).fecCrate()] = anal->maximum() - (latency * (-25));
129  }
130  }
131  if (!perPartition_) {
132  latency = globalLatency;
133  for (int i = 0; i < 5; i++)
134  shift[i] = globalShift;
135  }
136 
137  // Take into account the minimum coarse delay to bring the coarse delay down
138  // the same quantity is subtracted to the coarse delay of each APV
139  latency -= minCoarseDelay;
140 
141  // Iterate through devices and update device descriptions
142  uint16_t updatedAPV = 0;
143  uint16_t updatedPLL = 0;
144  std::vector<SiStripFecKey> invalid;
145  for (idevice = devices.begin(); idevice != devices.end(); idevice++) {
146  // Check device type
147  if ((*idevice)->getDeviceType() != APV25) {
148  continue;
149  }
150  // Cast to retrieve appropriate description object
151  apvDescription* desc = dynamic_cast<apvDescription*>(*idevice);
152  if (!desc) {
153  continue;
154  }
155  // Retrieve device addresses from device description
157  // Do it!
158  std::stringstream ss;
159  ss << "[LatencyHistosUsingDb::" << __func__ << "]"
160  << " Updating latency APV settings for crate/FEC/slot/ring/CCU/i2cAddr " << addr.fecCrate_ << "/"
161  << addr.fecSlot_ << "/" << addr.fecRing_ << "/" << addr.ccuAddr_ << "/" << addr.ccuChan_ << "/" << addr.i2cAddr_
162  << " from " << static_cast<uint16_t>(desc->getLatency());
163  desc->setLatency(latency);
164  ss << " to " << static_cast<uint16_t>(desc->getLatency());
165  LogTrace(mlDqmClient_) << ss.str();
166  updatedAPV++;
167  }
168 
169  // Change also the PLL delay
170  for (idevice = devices.begin(); idevice != devices.end(); idevice++) {
171  // Check device type
172  if ((*idevice)->getDeviceType() != PLL) {
173  continue;
174  }
175  // Cast to retrieve appropriate description object
176  pllDescription* desc = dynamic_cast<pllDescription*>(*idevice);
177  if (!desc) {
178  continue;
179  }
180  if (desc->getDelayCoarse() >= 15) {
181  continue;
182  }
183  // Retrieve device addresses from device description
185  // Construct key from device description
186  uint32_t fec_key =
187  SiStripFecKey(addr.fecCrate_, addr.fecSlot_, addr.fecRing_, addr.ccuAddr_, addr.ccuChan_, 0).key();
188  SiStripFecKey fec_path = SiStripFecKey(fec_key);
189  // Do it!
190  float delay = desc->getDelayCoarse() * 25 + desc->getDelayFine() * 25. / 24. + shift[addr.fecCrate_];
191  int delayCoarse = int(delay / 25);
192  int delayFine = int(round((delay - 25 * delayCoarse) * 24. / 25.));
193  if (delayFine == 24) {
194  delayFine = 0;
195  ++delayCoarse;
196  }
197  delayCoarse -= minCoarseDelay;
198  // maximum coarse setting
199  if (delayCoarse > 15) {
200  invalid.push_back(fec_key);
201  delayCoarse = sistrip::invalid_;
202  }
203  // Update PLL settings
204  if (delayCoarse != sistrip::invalid_ && delayFine != sistrip::invalid_) {
205  std::stringstream ss;
206  ss << "[LatencyHistosUsingDb::" << __func__ << "]"
207  << " Updating coarse/fine PLL settings"
208  << " for Crate/FEC/slot/ring/CCU " << fec_path.fecCrate() << "/" << fec_path.fecSlot() << "/"
209  << fec_path.fecRing() << "/" << fec_path.ccuAddr() << "/" << fec_path.ccuChan() << " from "
210  << static_cast<uint16_t>(desc->getDelayCoarse()) << "/" << static_cast<uint16_t>(desc->getDelayFine());
211  desc->setDelayCoarse(delayCoarse);
212  desc->setDelayFine(delayFine);
213  updatedPLL++;
214  ss << " to " << static_cast<uint16_t>(desc->getDelayCoarse()) << "/"
215  << static_cast<uint16_t>(desc->getDelayFine());
216  LogTrace(mlDqmClient_) << ss.str();
217  }
218  }
219 
220  // Retrieve FED ids from cabling
221  auto ids = cabling()->fedIds();
222 
223  // loop over the FED ids to determine min and max values of coarse delay
224  uint16_t minDelay = 256;
225  uint16_t maxDelay = 0;
226  uint16_t fedDelayCoarse = 0;
227  for (auto ifed = feds.begin(); ifed != feds.end(); ifed++) {
228  // If FED id not found in list (from cabling), then continue
229  if (find(ids.begin(), ids.end(), (*ifed)->getFedId()) == ids.end()) {
230  continue;
231  }
232  auto conns = cabling()->fedConnections((*ifed)->getFedId());
233  // loop over the connections for that FED
234  for (auto iconn = conns.begin(); iconn != conns.end(); iconn++) {
235  // check that this is a tracker module
236  if (DetId(iconn->detId()).det() != DetId::Tracker)
237  continue;
238  // build the Fed9UAddress for that channel. Used to update the description.
239  Fed9U::Fed9UAddress fedChannel = Fed9U::Fed9UAddress(iconn->fedCh());
240  // retreive the current value for the delays
241  fedDelayCoarse = (*ifed)->getCoarseDelay(fedChannel);
242  // update min and max
243  minDelay = minDelay < fedDelayCoarse ? minDelay : fedDelayCoarse;
244  maxDelay = maxDelay > fedDelayCoarse ? maxDelay : fedDelayCoarse;
245  }
246  }
247 
248  // compute the FED coarse global offset
249  int offset = (10 - minDelay) * 25; // try to ensure 10BX room for later fine delay scan
250  if (maxDelay + (offset / 25) > MAXFEDCOARSE)
251  offset = (MAXFEDCOARSE - maxDelay) * 25; // otherwise, take the largest possible
252 
253  // loop over the FED ids
254  for (SiStripConfigDb::FedDescriptionsV::const_iterator ifed = feds.begin(); ifed != feds.end(); ifed++) {
255  // If FED id not found in list (from cabling), then continue
256  if (find(ids.begin(), ids.end(), (*ifed)->getFedId()) == ids.end()) {
257  continue;
258  }
259  auto conns = cabling()->fedConnections((*ifed)->getFedId());
260  // loop over the connections for that FED
261  for (auto iconn = conns.begin(); iconn != conns.end(); iconn++) {
262  // check that this is a tracker module
263  if (DetId(iconn->detId()).det() != DetId::Tracker)
264  continue;
265  // build the Fed9UAddress for that channel. Used to update the description.
266  Fed9U::Fed9UAddress fedChannel = Fed9U::Fed9UAddress(iconn->fedCh());
267  // retreive the current value for the delays
268  int fedDelayCoarse = (*ifed)->getCoarseDelay(fedChannel);
269  int fedDelayFine = (*ifed)->getFineDelay(fedChannel);
270  // compute the FED delay
271  // this is done by substracting the best (PLL) delay to the present value (from the db)
272  int fedDelay = int(fedDelayCoarse * 25. - fedDelayFine * 24. / 25. - round(shift[iconn->fecCrate()]) + offset);
273  fedDelayCoarse = (fedDelay / 25) + 1;
274  fedDelayFine = fedDelayCoarse * 25 - fedDelay;
275  if (fedDelayFine == 25) {
276  fedDelayFine = 0;
277  --fedDelayCoarse;
278  }
279  // update the FED delay
280  std::stringstream ss;
281  ss << "[LatencyHistosUsingDb::" << __func__ << "]"
282  << " Updating the FED delay"
283  << " for loop FED id/ch " << (*ifed)->getFedId() << "/" << iconn->fedCh() << " from "
284  << (*ifed)->getCoarseDelay(fedChannel) << "/" << (*ifed)->getFineDelay(fedChannel) << " to ";
285  (*ifed)->setDelay(fedChannel, fedDelayCoarse, fedDelayFine);
286  ss << (*ifed)->getCoarseDelay(fedChannel) << "/" << (*ifed)->getFineDelay(fedChannel);
287  LogTrace(mlDqmClient_) << ss.str();
288  }
289  }
290 
291  // Summary output
292  edm::LogVerbatim(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "]"
293  << " Updated FED delays for " << ids.size() << " FEDs!";
294 
295  // Check if invalid settings were found
296  if (!invalid.empty()) {
297  std::stringstream ss;
298  ss << "[LatencyHistosUsingDb::" << __func__ << "]"
299  << " Found PLL coarse setting of 15"
300  << " (not allowed!) for following channels"
301  << " (Crate/FEC/slot/ring/CCU/LLD): ";
302  std::vector<SiStripFecKey>::iterator ikey = invalid.begin();
303  std::vector<SiStripFecKey>::iterator jkey = invalid.end();
304  for (; ikey != jkey; ++ikey) {
305  ss << ikey->fecCrate() << "/" << ikey->fecSlot() << "/" << ikey->fecRing() << "/" << ikey->ccuAddr() << "/"
306  << ikey->ccuChan() << ", ";
307  }
308  edm::LogWarning(mlDqmClient_) << ss.str();
309  return false;
310  }
311 
312  // Summary output
313  edm::LogVerbatim(mlDqmClient_) << "[LatencyHistosUsingDb::" << __func__ << "] "
314  << "Updated settings for " << updatedAPV << " APV devices and " << updatedPLL
315  << " PLL devices.";
316  return true;
317 }
318 
319 // -----------------------------------------------------------------------------
322  SamplingAnalysis* anal = dynamic_cast<SamplingAnalysis*>(analysis->second);
323  if (!anal) {
324  return;
325  }
326 
327  SiStripFecKey fec_key(anal->fecKey()); //@@ analysis->first
328  SiStripFedKey fed_key(anal->fedKey());
329 
330  uint16_t latency = static_cast<uint16_t>((anal->maximum() / (-25.)) + 0.5);
331 
332  ApvLatencyAnalysisDescription* tmp;
333  tmp = new ApvLatencyAnalysisDescription(latency,
334  0,
335  0,
336  0,
337  0,
338  0,
339  0,
340  db()->dbParams().partitions().begin()->second.partitionName(),
341  db()->dbParams().partitions().begin()->second.runNumber(),
342  anal->isValid(),
343  "",
344  fed_key.fedId(),
345  fed_key.feUnit(),
346  fed_key.feChan(),
347  fed_key.fedApv());
348 
349  // Add comments
350  typedef std::vector<std::string> Strings;
351  Strings errors = anal->getErrorCodes();
352  Strings::const_iterator istr = errors.begin();
353  Strings::const_iterator jstr = errors.end();
354  for (; istr != jstr; ++istr) {
355  tmp->addComments(*istr);
356  }
357 
358  // Store description
359  desc.push_back(tmp);
360 }
361 
364  perPartition_ = this->pset().getParameter<bool>("OptimizePerPartition");
365 }
SiStripConfigDb::getDeviceDescriptions
DeviceDescriptionsRange getDeviceDescriptions(std::string partition="")
Definition: DeviceDescriptions.cc:11
LatencyHistosUsingDb::~LatencyHistosUsingDb
~LatencyHistosUsingDb() override
Definition: LatencyHistosUsingDb.cc:25
l1tstage2emulator_dqm_sourceclient-live_cfg.feds
feds
Definition: l1tstage2emulator_dqm_sourceclient-live_cfg.py:153
mps_fire.i
i
Definition: mps_fire.py:428
MessageLogger.h
sistrip::TRACKER
Definition: ConstantsForGranularity.h:64
SiStripConfigDb::DeviceDescriptionsRange
DeviceDescriptions::range DeviceDescriptionsRange
Definition: SiStripConfigDb.h:110
config_102169_raw_cff.latency
latency
Definition: config_102169_raw_cff.py:29
CommissioningHistograms::pset
const edm::ParameterSet & pset() const
Definition: CommissioningHistograms.h:163
SiStripConfigDb::dbParams
const SiStripDbParams & dbParams() const
Definition: SiStripConfigDb.h:421
SamplingAnalysis
Analysis for latency run.
Definition: SamplingAnalysis.h:17
SiStripKey::key
const uint32_t & key() const
Definition: SiStripKey.h:120
SiStripConfigDb::deviceAddress
DeviceAddress deviceAddress(const deviceDescription &)
Definition: DeviceDescriptions.cc:503
edm
HLT enums.
Definition: AlignableModifier.h:19
SiStripConfigDb::getFedDescriptions
FedDescriptionsRange getFedDescriptions(std::string partition="")
Definition: FedDescriptions.cc:12
SiStripConfigDb::uploadFedDescriptions
void uploadFedDescriptions(std::string partition="")
Definition: FedDescriptions.cc:197
CommissioningHistosUsingDb::cabling
SiStripFedCabling *const cabling() const
Definition: CommissioningHistosUsingDb.h:94
LatencyHistosUsingDb.h
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
AlignmentPI::partitions
partitions
Definition: AlignmentPayloadInspectorHelper.h:48
SiStripFecKey::fecCrate
const uint16_t & fecCrate() const
Definition: SiStripFecKey.h:198
SiStripFedKey
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:56
CTPPSpixelLocalTrackReconstructionInfo::invalid
CommissioningHistograms::data
Analyses & data(bool getMaskedData=false)
Definition: CommissioningHistograms.cc:718
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
Strings
std::vector< std::string > Strings
Definition: MsgTools.h:18
CommissioningHistosUsingDb
Definition: CommissioningHistosUsingDb.h:16
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
sistrip::mlDqmClient_
static const char mlDqmClient_[]
Definition: ConstantsForLogger.h:19
SamplingHistograms
Definition: SamplingHistograms.h:9
dqmiodatasetharvest.db
db
Definition: dqmiodatasetharvest.py:119
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
DetId
Definition: DetId.h:17
SiStripConfigDb::FedDescriptionsRange
FedDescriptions::range FedDescriptionsRange
Definition: SiStripConfigDb.h:116
generateTowerEtThresholdLUT.addr
addr
Definition: generateTowerEtThresholdLUT.py:57
reco::ceil
constexpr int32_t ceil(float num)
Definition: constexpr_cmath.h:7
dqm::legacy::DQMStore
Definition: DQMStore.h:727
errors
Definition: errors.py:1
SiStripFecKey::fecRing
const uint16_t & fecRing() const
Definition: SiStripFecKey.h:200
SiStripConfigDb
An interface class to the DeviceFactory.
Definition: SiStripConfigDb.h:47
SiStripFecKey
Utility class that identifies a position within the strip tracker control structure,...
Definition: SiStripFecKey.h:45
SiStripFecKey.h
SiStripConfigDb::uploadDeviceDescriptions
void uploadDeviceDescriptions(std::string partition="")
Definition: DeviceDescriptions.cc:264
LatencyHistosUsingDb::perPartition_
bool perPartition_
Definition: LatencyHistosUsingDb.h:26
SiStripFecKey::ccuChan
const uint16_t & ccuChan() const
Definition: SiStripFecKey.h:202
SiStripConstants.h
edm::ParameterSet
Definition: ParameterSet.h:47
DetId::Tracker
Definition: DetId.h:25
ParameterSet
Definition: Functions.h:16
CommissioningHistosUsingDb::configure
void configure(const edm::ParameterSet &, const edm::EventSetup &) override
Definition: CommissioningHistosUsingDb.cc:56
SiStripDbParams::partitions
const_iterator_range partitions() const
Definition: SiStripDbParams.h:178
createfilelist.int
int
Definition: createfilelist.py:10
CommissioningHistosUsingDb::doUploadConf
bool doUploadConf() const
Definition: CommissioningHistosUsingDb.h:91
edm::EventSetup
Definition: EventSetup.h:57
sistrip::invalid_
static const uint16_t invalid_
Definition: Constants.h:16
CommissioningHistograms
Definition: CommissioningHistograms.h:23
LatencyHistosUsingDb::LatencyHistosUsingDb
LatencyHistosUsingDb(const edm::ParameterSet &pset, DQMStore *, SiStripConfigDb *const)
Definition: LatencyHistosUsingDb.cc:15
LatencyHistosUsingDb::update
bool update(SiStripConfigDb::DeviceDescriptionsRange, SiStripConfigDb::FedDescriptionsRange)
Definition: LatencyHistosUsingDb.cc:72
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
edm::shift
static unsigned const int shift
Definition: LuminosityBlockID.cc:7
DetId.h
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
sistrip::APV_LATENCY
Definition: ConstantsForRunType.h:76
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
SiStripFecKey::ccuAddr
const uint16_t & ccuAddr() const
Definition: SiStripFecKey.h:201
SiStripConfigDb::AnalysisDescriptionsV
std::vector< AnalysisDescription * > AnalysisDescriptionsV
Definition: SiStripConfigDb.h:135
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
LatencyHistosUsingDb::create
void create(SiStripConfigDb::AnalysisDescriptionsV &, Analysis) override
Definition: LatencyHistosUsingDb.cc:321
sistrip::PARTITION
Definition: ConstantsForGranularity.h:65
CommissioningHistosUsingDb::db
SiStripConfigDb *const db() const
Definition: CommissioningHistosUsingDb.h:93
SiStripFedCabling::fedIds
FedsConstIterRange fedIds() const
Definition: SiStripFedCabling.h:154
alcaDQMUpload.upload
def upload(url, args, files)
Definition: alcaDQMUpload.py:65
phase2TrackerDigitizer_cfi.delay
delay
Definition: phase2TrackerDigitizer_cfi.py:49
LatencyHistosUsingDb::configure
void configure(const edm::ParameterSet &, const edm::EventSetup &) override
Definition: LatencyHistosUsingDb.cc:362
SiStripConfigDb::DeviceAddress
Definition: SiStripConfigDb.h:141
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:224
sistrip
sistrip classes
Definition: SiStripQualityHelpers.h:14
conversion_template_cfg.anal
anal
Definition: conversion_template_cfg.py:16
LatencyHistosUsingDb::uploadConfigurations
void uploadConfigurations() override
Definition: LatencyHistosUsingDb.cc:32
SiStripFecKey::fecSlot
const uint16_t & fecSlot() const
Definition: SiStripFecKey.h:199
SiStripFedCabling::fedConnections
ConnsConstIterRange fedConnections(uint16_t fed_id) const
Definition: SiStripFedCabling.cc:160
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
MAXFEDCOARSE
#define MAXFEDCOARSE
Definition: LatencyHistosUsingDb.cc:9
CommissioningHistograms::Analysis
Analyses::iterator Analysis
Definition: CommissioningHistograms.h:58
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27