CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
SiStripFedKey Class Reference

A container class for generic run and event-related info, information required by the commissioning analyses (such as hardware parameters), event quality flags, error conditions, etc... More...

#include <SiStripFedKey.h>

Inheritance diagram for SiStripFedKey:
SiStripKey

Public Member Functions

const uint16_t & feChan () const
 
const uint16_t & fedApv () const
 
uint16_t fedChannel () const
 
const uint16_t & fedId () const
 
const uint16_t & feUnit () const
 
bool isConsistent (const SiStripKey &) const override
 
bool isEqual (const SiStripKey &) const override
 
bool isInvalid () const override
 
bool isInvalid (const sistrip::Granularity &) const override
 
bool isValid () const override
 
bool isValid (const sistrip::Granularity &) const override
 
void print (std::stringstream &ss) const override
 
 SiStripFedKey (const uint16_t &fed_id, const uint16_t &fe_unit=0, const uint16_t &fe_chan=0, const uint16_t &fed_apv=0)
 
 SiStripFedKey (const uint32_t &fed_key)
 
 SiStripFedKey (const std::string &directory_path)
 
 SiStripFedKey (const SiStripFedKey &)
 
 SiStripFedKey (const SiStripKey &)
 
 SiStripFedKey ()
 
void terse (std::stringstream &ss) const override
 
- Public Member Functions inherited from SiStripKey
const uint16_t & channel () const
 
const sistrip::Granularitygranularity () const
 
const uint32_t & key () const
 
const SiStripKeyoperator= (const SiStripKey &)
 
const std::string & path () const
 
 SiStripKey (const uint32_t &key)
 
 SiStripKey (const std::string &directory_path)
 
 SiStripKey (const SiStripKey &)
 
 SiStripKey ()
 
virtual ~SiStripKey ()
 

Static Public Member Functions

static uint16_t feChan (const uint16_t &fed_ch)
 
static uint16_t fedCh (const uint16_t &fe_unit, const uint16_t &fe_chan)
 
static uint32_t fedIndex (const uint16_t &fed_id, const uint16_t &fed_ch)
 
static uint16_t feUnit (const uint16_t &fed_ch)
 

Private Member Functions

void initFromKey () override
 
void initFromPath () override
 
void initFromValue () override
 
void initGranularity () override
 

Private Attributes

uint16_t feChan_
 
uint16_t fedApv_
 
uint16_t fedId_
 
uint16_t feUnit_
 

Static Private Attributes

static const uint16_t feChanMask_ = 0x00F
 
static const uint16_t feChanOffset_ = 2
 
static const uint16_t fedApvMask_ = 0x003
 
static const uint16_t fedApvOffset_ = 0
 
static const uint16_t fedCrateMask_ = 0x03F
 
static const uint16_t fedCrateOffset_ = 24
 
static const uint16_t fedIdMask_ = 0x1FF
 
static const uint16_t fedIdOffset_ = 10
 
static const uint16_t fedSlotMask_ = 0x01F
 
static const uint16_t fedSlotOffset_ = 19
 
static const uint16_t feUnitMask_ = 0x00F
 
static const uint16_t feUnitOffset_ = 6
 

Additional Inherited Members

- Protected Member Functions inherited from SiStripKey
void channel (const uint16_t &)
 
void granularity (const sistrip::Granularity &)
 
void key (const uint32_t &)
 
void path (const std::string &)
 

Detailed Description

A container class for generic run and event-related info, information required by the commissioning analyses (such as hardware parameters), event quality flags, error conditions, etc...

Utility class that identifies a position within the strip tracker readout structure, down to the level of an APV25 chip.

Author
R.Bainbridge
R.Bainbridge

The class allows to encode the position within a 32-bit "key" and, conversely, unpack a 32-bit key to provide the position.

The class provides the following member data:

Member data (integer in type only) with values of 0xFFFF signifies "invalid" (ie, FedId = 0xFFFF means "invalid FED id"). Data with null values signifies "all" (ie, FedId = 0 means "all FEDs").

The class generates a "directory path" string according to the member data. This can be used to organise histograms / other data types when using DQM / root. Conversely, the member data can also be built using the directory path when provided as a constructor argument.

The class also provides the "granularity" to which the FED key is unambiguous (ie, not "invalid" or "null") in defining a position within the readout system.

In addition, the class provides static methods that allow to convert between the two "FED channel" numbering schema in place. The class member data hold values that respect the "external" numbering scheme used by the optical links group. Front-End units are numbered from 1 to 8, bottom to top. Channels with the FE units are numbered 1 to 12, bottom to top. The "internal" numbering scheme is used by the DAQ software, which numbers FED channels consecutively from 0 to 95, top to bottom.

Definition at line 56 of file SiStripFedKey.h.

Constructor & Destructor Documentation

SiStripFedKey::SiStripFedKey ( const uint16_t &  fed_id,
const uint16_t &  fe_unit = 0,
const uint16_t &  fe_chan = 0,
const uint16_t &  fed_apv = 0 
)

Constructor using FED id, FE unit, FE channel, and APV.

Definition at line 12 of file SiStripFedKey.cc.

References initFromKey(), initFromPath(), initFromValue(), and initGranularity().

15  :
16  SiStripKey(),
17  fedId_(fed_id),
18  feUnit_(fe_unit),
19  feChan_(fe_chan),
20  fedApv_(fed_apv)
21 {
22  // order is important!
23  initFromValue();
24  initFromKey();
25  initFromPath();
27 }
void initFromValue() override
void initFromPath() override
void initFromKey() override
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
void initGranularity() override
SiStripFedKey::SiStripFedKey ( const uint32_t &  fed_key)

Constructor using 32-bit "FED key".

Definition at line 31 of file SiStripFedKey.cc.

References initFromKey(), initFromPath(), initFromValue(), and initGranularity().

31  :
32  SiStripKey(fed_key),
37 {
38  // order is important!
39  initFromKey();
40  initFromValue();
41  initFromPath();
43 }
void initFromValue() override
void initFromPath() override
void initFromKey() override
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
void initGranularity() override
static const uint16_t invalid_
Definition: Constants.h:16
SiStripFedKey::SiStripFedKey ( const std::string &  directory_path)

Constructor using directory path.

Definition at line 47 of file SiStripFedKey.cc.

References initFromKey(), initFromPath(), initFromValue(), and initGranularity().

47  :
53 {
54  // order is important!
55  initFromPath();
56  initFromValue();
57  initFromKey();
59 }
void initFromValue() override
void initFromPath() override
void initFromKey() override
uint16_t fedApv_
const std::string & path() const
Definition: SiStripKey.h:126
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
void initGranularity() override
static const uint16_t invalid_
Definition: Constants.h:16
SiStripFedKey::SiStripFedKey ( const SiStripFedKey input)

Copy constructor.

Definition at line 63 of file SiStripFedKey.cc.

References SiStripKey::granularity(), SiStripKey::key(), and SiStripKey::path().

63  :
64  SiStripKey(),
65  fedId_(input.fedId()),
66  feUnit_(input.feUnit()),
67  feChan_(input.feChan()),
68  fedApv_(input.fedApv())
69 {
70  key(input.key());
71  path(input.path());
72  granularity(input.granularity());
73 }
const uint32_t & key() const
Definition: SiStripKey.h:125
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:127
uint16_t fedApv_
const std::string & path() const
Definition: SiStripKey.h:126
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
const uint16_t & fedApv() const
const uint16_t & feUnit() const
const uint16_t & feChan() const
const uint16_t & fedId() const
SiStripFedKey::SiStripFedKey ( const SiStripKey input)

Copy constructor using base class.

Definition at line 77 of file SiStripFedKey.cc.

References feChan(), feChan_, fedApv(), fedApv_, fedId(), fedId_, feUnit(), feUnit_, SiStripKey::granularity(), input, SiStripKey::key(), and SiStripKey::path().

77  :
78  SiStripKey(),
83 {
84  const SiStripFedKey& fed_key = dynamic_cast<const SiStripFedKey&>(input);
85  key(fed_key.key());
86  path(fed_key.path());
87  granularity(fed_key.granularity());
88  fedId_ = fed_key.fedId();
89  feUnit_ = fed_key.feUnit();
90  feChan_ = fed_key.feChan();
91  fedApv_ = fed_key.fedApv();
92 }
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:56
static std::string const input
Definition: EdmProvDump.cc:44
const uint32_t & key() const
Definition: SiStripKey.h:125
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:127
uint16_t fedApv_
const std::string & path() const
Definition: SiStripKey.h:126
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
const uint16_t & fedApv() const
const uint16_t & feUnit() const
static const uint16_t invalid_
Definition: Constants.h:16
const uint16_t & feChan() const
const uint16_t & fedId() const
SiStripFedKey::SiStripFedKey ( )

Default constructor

Definition at line 96 of file SiStripFedKey.cc.

96  :
97  SiStripKey(),
102 {;}
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t invalid_
Definition: Constants.h:16

Member Function Documentation

const uint16_t & SiStripFedKey::feChan ( ) const
inline
uint16_t SiStripFedKey::feChan ( const uint16_t &  fed_ch)
static

Returns Front-End channel ("external" numbering scheme) for given FED channel ("internal" numbering scheme).

Definition at line 128 of file SiStripFedKey.cc.

References sistrip::FEDCH_PER_FED, and sistrip::invalid_.

128  {
129  if ( fed_ch < sistrip::FEDCH_PER_FED ) {
130  return ( (95-fed_ch)%12 + 1 );
131  }
132  return sistrip::invalid_;
133 }
static const uint16_t invalid_
Definition: Constants.h:16
static const uint16_t FEDCH_PER_FED
const uint16_t & SiStripFedKey::fedApv ( ) const
inline

Returns APV within FED channel.

Definition at line 197 of file SiStripFedKey.h.

References fedApv_.

Referenced by SummaryGeneratorReadoutView::fill(), isConsistent(), isEqual(), print(), SiStripFedKey(), and terse().

197 { return fedApv_; }
uint16_t fedApv_
uint16_t SiStripFedKey::fedCh ( const uint16_t &  fe_unit,
const uint16_t &  fe_chan 
)
static

Returns FED channel ("internal" numbering scheme) for given Front-End unit and channel ("external" numbering scheme).

Definition at line 106 of file SiStripFedKey.cc.

References sistrip::FEDCH_PER_FEUNIT, sistrip::FEUNITS_PER_FED, and sistrip::invalid_.

Referenced by fedChannel(), and SiStripCondObjBuilderFromDb::setValuesApvTiming().

107  {
108  if ( fe_unit <= sistrip::FEUNITS_PER_FED &&
109  fe_chan <= sistrip::FEDCH_PER_FEUNIT ) {
110  if ( fe_unit != 0 && fe_chan != 0 ) {
111  return ( 95 - ( 12 * (fe_unit-1) + (fe_chan-1) ) );
112  }
113  }
114  return sistrip::invalid_;
115 }
static const uint16_t FEUNITS_PER_FED
static const uint16_t FEDCH_PER_FEUNIT
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t SiStripFedKey::fedChannel ( ) const
inline

Returns FED channel (according to "internal" numbering).

Definition at line 198 of file SiStripFedKey.h.

References feChan_, fedCh(), and feUnit_.

Referenced by CommissioningHistosUsingDb::addDcuDetIds(), CommissioningAnalysis::header(), FastFedCablingAnalysis::header(), FedCablingAnalysis::print(), print(), PedestalsHistosUsingDb::update(), PedsFullNoiseHistosUsingDb::update(), and ApvTimingHistosUsingDb::update().

198 { return fedCh( feUnit_, feChan_ ); }
uint16_t feChan_
uint16_t feUnit_
static uint16_t fedCh(const uint16_t &fe_unit, const uint16_t &fe_chan)
const uint16_t & SiStripFedKey::fedId ( ) const
inline
uint32_t SiStripFedKey::fedIndex ( const uint16_t &  fed_id,
const uint16_t &  fed_ch 
)
static

Returns number that encodes FED id and FED channel, which can be used to index vectors containing event and non-event data. Users should check if returned value is valid for indexing vector!

Definition at line 137 of file SiStripFedKey.cc.

References sistrip::FED_ID_MAX, sistrip::FED_ID_MIN, sistrip::FEDCH_PER_FED, and sistrip::invalid32_.

Referenced by SiStripSpyDisplayModule::analyze(), sistrip::SpyUnpacker::createDigis(), sistrip::SpyEventMatcher::mergeMatchingData(), and sistrip::SpyDigiConverter::mergeModuleChannels().

138  {
139  if ( fed_id < sistrip::FED_ID_MIN ||
140  fed_id > sistrip::FED_ID_MAX ||
141  fed_ch >= sistrip::FEDCH_PER_FED ) { return sistrip::invalid32_; }
142  return ( fed_id * sistrip::FEDCH_PER_FED + fed_ch );
143 }
static const uint16_t FED_ID_MIN
static const uint32_t invalid32_
Definition: Constants.h:15
static const uint16_t FEDCH_PER_FED
static const uint16_t FED_ID_MAX
const uint16_t & SiStripFedKey::feUnit ( ) const
inline
uint16_t SiStripFedKey::feUnit ( const uint16_t &  fed_ch)
static

Returns Front-End unit ("external" numbering scheme) for given FED channel ("internal" numbering scheme).

Definition at line 119 of file SiStripFedKey.cc.

References sistrip::FEDCH_PER_FED, and sistrip::invalid_.

119  {
120  if ( fed_ch < sistrip::FEDCH_PER_FED ) {
121  return ( (95-fed_ch)/12 + 1 );
122  }
123  return sistrip::invalid_;
124 }
static const uint16_t invalid_
Definition: Constants.h:16
static const uint16_t FEDCH_PER_FED
void SiStripFedKey::initFromKey ( )
overrideprivatevirtual

Reimplemented from SiStripKey.

Definition at line 252 of file SiStripFedKey.cc.

References sistrip::APVS_PER_FEDCH, feChan_, feChanMask_, feChanOffset_, sistrip::FED_ID_MAX, sistrip::FED_ID_MIN, fedApv_, fedApvMask_, fedApvOffset_, sistrip::FEDCH_PER_FEUNIT, fedId_, fedIdMask_, fedIdOffset_, feUnit_, feUnitMask_, feUnitOffset_, sistrip::FEUNITS_PER_FED, sistrip::invalid32_, sistrip::invalid_, and SiStripKey::key().

Referenced by SiStripFedKey().

252  {
253 
254  if ( key() == sistrip::invalid32_ ) {
255 
256  // ---------- Set FedKey based on member data ----------
257 
258  // Initialise to null value
259  key(0);
260 
261  // Extract FED id
262  if ( fedId_ >= sistrip::FED_ID_MIN &&
264  key( key() | (fedId_<<fedIdOffset_) );
265  } else if ( fedId_ == 0 ) {
266  key( key() | (fedId_<<fedIdOffset_) );
267  } else {
268  key( key() | (fedIdMask_<<fedIdOffset_) );
269  }
270 
271  // Extract FE unit
272  if ( feUnit_ >= 1 &&
274  key( key() | (feUnit_<<feUnitOffset_) );
275  } else if ( feUnit_ == 0 ) {
276  key( key() | (feUnit_<<feUnitOffset_) );
277  } else {
278  key( key() | (feUnitMask_<<feUnitOffset_) );
279  }
280 
281  // Extract FE chan
282  if ( feChan_ >= 1 &&
284  key( key() | (feChan_<<feChanOffset_) );
285  } else if ( feChan_ == 0 ) {
286  key( key() | (feChan_<<feChanOffset_) );
287  } else {
288  key( key() | (feChanMask_<<feChanOffset_) );
289  }
290 
291  // Extract FED APV
292  if ( fedApv_ >= 1 &&
294  key( key() | (fedApv_<<fedApvOffset_) );
295  } else if ( fedApv_ == 0 ) {
296  key( key() | (fedApv_<<fedApvOffset_) );
297  } else {
298  key( key() | (fedApvMask_<<fedApvOffset_) );
299  }
300 
301  // Set invalid key if necessary
302  if ( fedId_ == sistrip::invalid_ &&
305  fedApv_ == sistrip::invalid_ ) {
307  }
308 
309  } else {
310 
311  // ---------- Set member data based on FED key ----------
312 
313  fedId_ = ( key()>>fedIdOffset_ ) & fedIdMask_;
317 
318  if ( fedId_ == fedIdMask_ ) { fedId_ = sistrip::invalid_; }
319  if ( feUnit_ == feUnitMask_ ) { feUnit_ = sistrip::invalid_; }
320  if ( feChan_ == feChanMask_ ) { feChan_ = sistrip::invalid_; }
321  if ( fedApv_ == fedApvMask_ ) { fedApv_ = sistrip::invalid_; }
322 
323  }
324 
325 }
static const uint16_t feChanMask_
static const uint16_t FED_ID_MIN
static const uint16_t feUnitOffset_
static const uint32_t invalid32_
Definition: Constants.h:15
const uint32_t & key() const
Definition: SiStripKey.h:125
uint16_t fedApv_
static const uint16_t FEUNITS_PER_FED
static const uint16_t feUnitMask_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t fedIdOffset_
static const uint16_t feChanOffset_
static const uint16_t FEDCH_PER_FEUNIT
static const uint16_t invalid_
Definition: Constants.h:16
static const uint16_t fedApvMask_
static const uint16_t FED_ID_MAX
static const uint16_t fedIdMask_
static const uint16_t APVS_PER_FEDCH
static const uint16_t fedApvOffset_
void SiStripFedKey::initFromPath ( )
overrideprivatevirtual

Reimplemented from SiStripKey.

Definition at line 329 of file SiStripFedKey.cc.

References dir, sistrip::dir_, sistrip::feChan_, feChan_, sistrip::fedApv_, fedApv_, fedId_, sistrip::feDriver_, sistrip::feUnit_, feUnit_, spr::find(), GetRecoTauVFromDQM_MC_cff::next, sistrip::null_, SiStripKey::path(), sistrip::readoutView_, sistrip::root_, AlCaHLTBitMon_QueryRunRegistry::string, and groupFilesInBlocks::temp.

Referenced by SiStripFedKey().

329  {
330 
331  if ( path() == sistrip::null_ ) {
332 
333  // ---------- Set directory path based on member data ----------
334 
335  std::stringstream dir;
336 
337  dir << sistrip::root_ << sistrip::dir_
339 
340  // Add FED id
341  if ( fedId_ ) {
343 
344  // Add FE unit
345  if ( feUnit_ ) {
347 
348  // Add FE channel
349  if ( feChan_ ) {
351 
352  // Add FED APV
353  if ( fedApv_ ) {
355  }
356  }
357  }
358  }
359 
360  std::string temp( dir.str() );
361  path( temp );
362 
363  } else {
364 
365  // ---------- Set member data based on directory path ----------
366 
367  fedId_ = 0;
368  feUnit_ = 0;
369  feChan_ = 0;
370  fedApv_ = 0;
371 
372  // Check if root is found
373  if ( path().find( sistrip::root_ ) == std::string::npos ) {
374  std::string temp = path();
375  path( std::string(sistrip::root_) + sistrip::dir_ + temp );
376  }
377 
378  size_t curr = 0; // current string position
379  size_t next = 0; // next string position
380  next = path().find( sistrip::readoutView_, curr );
381 
382  // Extract view
383  curr = next;
384  if ( curr != std::string::npos ) {
385  next = path().find( sistrip::feDriver_, curr );
386  std::string readout_view( path(),
387  curr+(sizeof(sistrip::readoutView_) - 1),
388  (next-(sizeof(sistrip::dir_) - 1))-curr );
389 
390  // Extract FED id
391  curr = next;
392  if ( curr != std::string::npos ) {
393  next = path().find( sistrip::feUnit_, curr );
394  std::string fed_id( path(),
395  curr+(sizeof(sistrip::feDriver_) - 1),
396  (next-(sizeof(sistrip::dir_) - 1))-curr );
397  fedId_ = atoi( fed_id.c_str() );
398 
399  // Extract FE unit
400  curr = next;
401  if ( curr != std::string::npos ) {
402  next = path().find( sistrip::feChan_, curr );
403  std::string fe_unit( path(),
404  curr+(sizeof(sistrip::feUnit_) - 1),
405  next-curr );
406  feUnit_ = atoi( fe_unit.c_str() );
407 
408  // Extract FE channel
409  curr = next;
410  if ( curr != std::string::npos ) {
411  next = path().find( sistrip::fedApv_, curr );
412  std::string fe_chan( path(),
413  curr+(sizeof(sistrip::feChan_) - 1),
414  next-curr );
415  feChan_ = atoi( fe_chan.c_str() );
416 
417  // Extract FED APV
418  curr = next;
419  if ( curr != std::string::npos ) {
420  next = std::string::npos;
421  std::string fed_apv( path(),
422  curr+(sizeof(sistrip::fedApv_) - 1),
423  next-curr );
424  fedApv_ = atoi( fed_apv.c_str() );
425  }
426  }
427  }
428  }
429  } else {
430  std::stringstream ss;
431  ss << sistrip::root_ << sistrip::dir_;
432  //ss << sistrip::root_ << sistrip::dir_
433  //<< sistrip::unknownView_ << sistrip::dir_;
434  std::string temp( ss.str() );
435  path( temp );
436  }
437 
438  }
439 
440 }
static const char feDriver_[]
static const char dir_[]
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
uint16_t fedApv_
static const char fedApv_[]
const std::string & path() const
Definition: SiStripKey.h:126
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const char feChan_[]
static const char root_[]
static const char feUnit_[]
dbl *** dir
Definition: mlp_gen.cc:35
static const char readoutView_[]
static const char null_[]
Definition: Constants.h:22
void SiStripFedKey::initFromValue ( )
overrideprivatevirtual

Reimplemented from SiStripKey.

Definition at line 228 of file SiStripFedKey.cc.

References sistrip::APVS_PER_FEDCH, feChan_, sistrip::FED_ID_MAX, sistrip::FED_ID_MIN, fedApv_, sistrip::FEDCH_PER_FEUNIT, fedId_, feUnit_, sistrip::FEUNITS_PER_FED, and sistrip::invalid_.

Referenced by SiStripFedKey().

228  {
229 
230  if ( fedId_ >= sistrip::FED_ID_MIN &&
232  fedId_ = fedId_;
233  } else if ( fedId_ == 0 ) {
234  fedId_ = fedId_;
235  } else {
237  }
238 
240  else { feUnit_ = sistrip::invalid_; }
241 
243  else { feChan_ = sistrip::invalid_; }
244 
246  else { fedApv_ = sistrip::invalid_; }
247 
248 }
static const uint16_t FED_ID_MIN
uint16_t fedApv_
static const uint16_t FEUNITS_PER_FED
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t FEDCH_PER_FEUNIT
static const uint16_t invalid_
Definition: Constants.h:16
static const uint16_t FED_ID_MAX
static const uint16_t APVS_PER_FEDCH
void SiStripFedKey::initGranularity ( )
overrideprivatevirtual

Reimplemented from SiStripKey.

Definition at line 444 of file SiStripFedKey.cc.

References SiStripKey::channel(), sistrip::FE_CHAN, sistrip::FE_DRIVER, sistrip::FE_UNIT, feChan_, sistrip::FED_APV, sistrip::FED_SYSTEM, fedApv_, fedId_, feUnit_, SiStripKey::granularity(), sistrip::invalid_, and sistrip::UNKNOWN_GRAN.

Referenced by SiStripFedKey().

444  {
445 
447  channel(0);
448  if ( fedId_ && fedId_ != sistrip::invalid_ ) {
450  channel(fedId_);
451  if ( feUnit_ && feUnit_ != sistrip::invalid_ ) {
453  channel(feUnit_);
454  if ( feChan_ && feChan_ != sistrip::invalid_ ) {
456  channel(feChan_);
457  if ( fedApv_ && fedApv_ != sistrip::invalid_ ) {
459  channel(fedApv_);
460  } else if ( fedApv_ == sistrip::invalid_ ) {
463  }
464  } else if ( feChan_ == sistrip::invalid_ ) {
467  }
468  } else if ( feUnit_ == sistrip::invalid_ ) {
471  }
472  } else if ( fedId_ == sistrip::invalid_ ) {
475  }
476 
477 }
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:127
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
const uint16_t & channel() const
Definition: SiStripKey.h:128
static const uint16_t invalid_
Definition: Constants.h:16
bool SiStripFedKey::isConsistent ( const SiStripKey key) const
overridevirtual

"Consistent" means identical and/or null (ie, "all") data.

Reimplemented from SiStripKey.

Definition at line 159 of file SiStripFedKey.cc.

References feChan(), feChan_, fedApv(), fedApv_, fedId(), fedId_, feUnit(), feUnit_, input, isEqual(), and SiStripKey::key().

159  {
160  const SiStripFedKey& input = dynamic_cast<const SiStripFedKey&>(key);
161  if ( isEqual(input) ) { return true; }
162  else if ( ( fedId_ == 0 || input.fedId() == 0 ) &&
163  ( feUnit_ == 0 || input.feUnit() == 0 ) &&
164  ( feChan_ == 0 || input.feChan() == 0 ) &&
165  ( fedApv_ == 0 || input.fedApv() == 0 ) ) {
166  return true;
167  } else { return false; }
168 }
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:56
bool isEqual(const SiStripKey &) const override
static std::string const input
Definition: EdmProvDump.cc:44
const uint32_t & key() const
Definition: SiStripKey.h:125
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
const uint16_t & fedApv() const
const uint16_t & feUnit() const
const uint16_t & feChan() const
const uint16_t & fedId() const
bool SiStripFedKey::isEqual ( const SiStripKey key) const
overridevirtual

Identifies key objects with identical member data.

Reimplemented from SiStripKey.

Definition at line 147 of file SiStripFedKey.cc.

References feChan(), feChan_, fedApv(), fedApv_, fedId(), fedId_, feUnit(), feUnit_, input, and SiStripKey::key().

Referenced by isConsistent().

147  {
148  const SiStripFedKey& input = dynamic_cast<const SiStripFedKey&>(key);
149  if ( fedId_ == input.fedId() &&
150  feUnit_ == input.feUnit() &&
151  feChan_ == input.feChan() &&
152  fedApv_ == input.fedApv() ) {
153  return true;
154  } else { return false; }
155 }
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:56
static std::string const input
Definition: EdmProvDump.cc:44
const uint32_t & key() const
Definition: SiStripKey.h:125
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
const uint16_t & fedApv() const
const uint16_t & feUnit() const
const uint16_t & feChan() const
const uint16_t & fedId() const
bool SiStripFedKey::isInvalid ( ) const
overridevirtual

Identifies all member data as being invalid.

Reimplemented from SiStripKey.

Definition at line 200 of file SiStripFedKey.cc.

References sistrip::FED_APV.

200  {
201  return isInvalid(sistrip::FED_APV);
202 }
bool isInvalid() const override
bool SiStripFedKey::isInvalid ( const sistrip::Granularity gran) const
overridevirtual

All member data to level of "Granularity" are invalid. If sistrip::Granularity is "undefined", returns true.

Reimplemented from SiStripKey.

Definition at line 206 of file SiStripFedKey.cc.

References sistrip::FE_CHAN, sistrip::FE_DRIVER, sistrip::FE_UNIT, feChan_, sistrip::FED_APV, sistrip::FED_SYSTEM, fedApv_, fedId_, feUnit_, sistrip::invalid_, sistrip::UNDEFINED_GRAN, and sistrip::UNKNOWN_GRAN.

206  {
207  if ( gran == sistrip::FED_SYSTEM ) { return false; }
208  else if ( gran == sistrip::UNDEFINED_GRAN ||
209  gran == sistrip::UNKNOWN_GRAN ) { return false; }
210 
211  if ( fedId_ == sistrip::invalid_ ) {
212  if ( gran == sistrip::FE_DRIVER ) { return true; }
213  if ( feUnit_ == sistrip::invalid_ ) {
214  if ( gran == sistrip::FE_UNIT ) { return true; }
215  if ( feChan_ == sistrip::invalid_ ) {
216  if ( gran == sistrip::FE_CHAN ) { return true; }
217  if ( fedApv_ == sistrip::invalid_ ) {
218  if ( gran == sistrip::FED_APV ) { return true; }
219  }
220  }
221  }
222  }
223  return false;
224 }
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t invalid_
Definition: Constants.h:16
bool SiStripFedKey::isValid ( void  ) const
overridevirtual
bool SiStripFedKey::isValid ( const sistrip::Granularity gran) const
overridevirtual

All member data to level of "Granularity" are valid. If sistrip::Granularity is "undefined", returns false.

Reimplemented from SiStripKey.

Definition at line 178 of file SiStripFedKey.cc.

References sistrip::FE_CHAN, sistrip::FE_DRIVER, sistrip::FE_UNIT, feChan_, sistrip::FED_APV, sistrip::FED_SYSTEM, fedApv_, fedId_, feUnit_, sistrip::invalid_, sistrip::UNDEFINED_GRAN, and sistrip::UNKNOWN_GRAN.

Referenced by ntupleDataFormat._Object::_checkIsValid(), and core.AutoHandle.AutoHandle::ReallyLoad().

178  {
179  if ( gran == sistrip::FED_SYSTEM ) { return true; }
180  else if ( gran == sistrip::UNDEFINED_GRAN ||
181  gran == sistrip::UNKNOWN_GRAN ) { return false; }
182 
183  if ( fedId_ != sistrip::invalid_ ) {
184  if ( gran == sistrip::FE_DRIVER ) { return true; }
185  if ( feUnit_ != sistrip::invalid_ ) {
186  if ( gran == sistrip::FE_UNIT ) { return true; }
187  if ( feChan_ != sistrip::invalid_ ) {
188  if ( gran == sistrip::FE_CHAN ) { return true; }
189  if ( fedApv_ != sistrip::invalid_ ) {
190  if ( gran == sistrip::FED_APV ) { return true; }
191  }
192  }
193  }
194  }
195  return false;
196 }
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t invalid_
Definition: Constants.h:16
void SiStripFedKey::print ( std::stringstream &  ss) const
overridevirtual

Print member data of the key

Reimplemented from SiStripKey.

Definition at line 506 of file SiStripFedKey.cc.

References SiStripKey::channel(), TauDecayModes::dec, feChan(), fedApv(), fedChannel(), fedId(), feUnit(), SiStripEnumsAndStrings::granularity(), SiStripKey::granularity(), isValid(), SiStripKey::key(), and SiStripKey::path().

Referenced by operator<<(), and CommissioningHistograms::printHistosMap().

506  {
507  ss << " [SiStripFedKey::print]" << std::endl
508  << std::hex
509  << " FED key : 0x"
510  << std::setfill('0')
511  << std::setw(8) << key() << std::endl
512  << std::setfill(' ')
513  << std::dec
514  << " FED id : " << fedId() << std::endl
515  << " Front-End unit : " << feUnit() << std::endl
516  << " Front-End chan : " << feChan() << std::endl
517  << " (internal chan) : "
518  << "(" << fedChannel() << ")" << std::endl
519  << " FED APV : " << fedApv() << std::endl
520  << " Directory : " << path() << std::endl
521  << " Granularity : "
523  << " Channel : " << channel() << std::endl
524  << " isValid : " << isValid();
525 }
static std::string granularity(const sistrip::Granularity &)
const uint32_t & key() const
Definition: SiStripKey.h:125
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:127
const std::string & path() const
Definition: SiStripKey.h:126
uint16_t fedChannel() const
const uint16_t & fedApv() const
const uint16_t & feUnit() const
const uint16_t & channel() const
Definition: SiStripKey.h:128
const uint16_t & feChan() const
bool isValid() const override
const uint16_t & fedId() const
void SiStripFedKey::terse ( std::stringstream &  ss) const
overridevirtual

A terse summary of the key

Reimplemented from SiStripKey.

Definition at line 481 of file SiStripFedKey.cc.

References feChan(), fedApv(), fedId(), and feUnit().

Referenced by SiStripCondObjBuilderFromDb::SkipDeviceDescription::dump().

481  {
482  ss << "FED:crate/slot/id/unit/chan/apv= "
483  << "-" << "/"
484  << "-" << "/"
485  << fedId() << "/"
486  << feUnit() << "/"
487  << feChan() << "/"
488  << fedApv();
489 // ss << " FedKey"
490 // //<<"=0x"
491 // //<< std::hex
492 // //<< std::setfill('0') << std::setw(8) << key() << std::setfill(' ')
493 // //<< std::dec
494 // //<< ", " << ( isValid() ? "Valid" : "Invalid" )
495 // //<< ", FedCrate=" << fedCrate()
496 // //<< ", FedSlot=" << fedSlot()
497 // << ", FedId=" << fedId()
498 // << ", FeUnit=" << feUnit()
499 // << ", FeChan=" << feChan()
500 // //<< ", FedChannel=" << fedChannel()
501 // << ", FedApv=" << fedApv();
502 }
const uint16_t & fedApv() const
const uint16_t & feUnit() const
const uint16_t & feChan() const
const uint16_t & fedId() const

Member Data Documentation

uint16_t SiStripFedKey::feChan_
private
const uint16_t SiStripFedKey::feChanMask_ = 0x00F
staticprivate

Definition at line 187 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::feChanOffset_ = 2
staticprivate

Definition at line 179 of file SiStripFedKey.h.

Referenced by initFromKey().

uint16_t SiStripFedKey::fedApv_
private
const uint16_t SiStripFedKey::fedApvMask_ = 0x003
staticprivate

Definition at line 188 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedApvOffset_ = 0
staticprivate

Definition at line 180 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedCrateMask_ = 0x03F
staticprivate

Definition at line 183 of file SiStripFedKey.h.

const uint16_t SiStripFedKey::fedCrateOffset_ = 24
staticprivate

Definition at line 175 of file SiStripFedKey.h.

uint16_t SiStripFedKey::fedId_
private

FED id [0,50-489,invalid].

Definition at line 163 of file SiStripFedKey.h.

Referenced by fedId(), initFromKey(), initFromPath(), initFromValue(), initGranularity(), isConsistent(), isEqual(), isInvalid(), isValid(), and SiStripFedKey().

const uint16_t SiStripFedKey::fedIdMask_ = 0x1FF
staticprivate

Definition at line 185 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedIdOffset_ = 10
staticprivate

Definition at line 177 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedSlotMask_ = 0x01F
staticprivate

Definition at line 184 of file SiStripFedKey.h.

const uint16_t SiStripFedKey::fedSlotOffset_ = 19
staticprivate

Definition at line 176 of file SiStripFedKey.h.

uint16_t SiStripFedKey::feUnit_
private
const uint16_t SiStripFedKey::feUnitMask_ = 0x00F
staticprivate

Definition at line 186 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::feUnitOffset_ = 6
staticprivate

Definition at line 178 of file SiStripFedKey.h.

Referenced by initFromKey().