CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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
 
bool isEqual (const SiStripKey &) const
 
bool isInvalid () const
 
bool isInvalid (const sistrip::Granularity &) const
 
bool isValid () const
 
bool isValid (const sistrip::Granularity &) const
 
virtual void print (std::stringstream &ss) const
 
 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 ()
 
virtual void terse (std::stringstream &ss) const
 
- 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 ()
 
void initFromPath ()
 
void initFromValue ()
 
void initGranularity ()
 

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 57 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 13 of file SiStripFedKey.cc.

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

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

Constructor using 32-bit "FED key".

Definition at line 32 of file SiStripFedKey.cc.

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

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

Constructor using directory path.

Definition at line 48 of file SiStripFedKey.cc.

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

48  :
54 {
55  // order is important!
56  initFromPath();
57  initFromValue();
58  initFromKey();
60 }
uint16_t fedApv_
const std::string & path() const
Definition: SiStripKey.h:127
uint16_t feChan_
void initFromValue()
uint16_t fedId_
uint16_t feUnit_
void initGranularity()
static const uint16_t invalid_
Definition: Constants.h:17
SiStripFedKey::SiStripFedKey ( const SiStripFedKey input)

Copy constructor.

Definition at line 64 of file SiStripFedKey.cc.

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

64  :
65  SiStripKey(),
66  fedId_(input.fedId()),
67  feUnit_(input.feUnit()),
68  feChan_(input.feChan()),
69  fedApv_(input.fedApv())
70 {
71  key(input.key());
72  path(input.path());
73  granularity(input.granularity());
74 }
const uint32_t & key() const
Definition: SiStripKey.h:126
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:128
uint16_t fedApv_
const std::string & path() const
Definition: SiStripKey.h:127
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 78 of file SiStripFedKey.cc.

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

78  :
79  SiStripKey(),
84 {
85  SiStripKey& temp = const_cast<SiStripKey&>(input);
86  SiStripFedKey& fed_key = dynamic_cast<SiStripFedKey&>(temp);
87  if ( (&fed_key) ) {
88  key(fed_key.key());
89  path(fed_key.path());
90  granularity(fed_key.granularity());
91  fedId_ = fed_key.fedId();
92  feUnit_ = fed_key.feUnit();
93  feChan_ = fed_key.feChan();
94  fedApv_ = fed_key.fedApv();
95  }
96 }
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:57
const uint32_t & key() const
Definition: SiStripKey.h:126
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:128
uint16_t fedApv_
Base utility class that identifies a position within a logical structure of the strip tracker...
Definition: SiStripKey.h:24
const std::string & path() const
Definition: SiStripKey.h:127
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:17
const uint16_t & feChan() const
const uint16_t & fedId() const
SiStripFedKey::SiStripFedKey ( )

Default constructor

Definition at line 100 of file SiStripFedKey.cc.

100  :
101  SiStripKey(),
106 {;}
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t invalid_
Definition: Constants.h:17

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 132 of file SiStripFedKey.cc.

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

132  {
133  if ( fed_ch < sistrip::FEDCH_PER_FED ) {
134  return ( (95-fed_ch)%12 + 1 );
135  }
136  return sistrip::invalid_;
137 }
static const uint16_t invalid_
Definition: Constants.h:17
static const uint16_t FEDCH_PER_FED
const uint16_t & SiStripFedKey::fedApv ( ) const
inline

Returns APV within FED channel.

Definition at line 198 of file SiStripFedKey.h.

References fedApv_.

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

198 { 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 110 of file SiStripFedKey.cc.

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

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

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

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

Definition at line 199 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().

199 { 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 141 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().

142  {
143  if ( fed_id < sistrip::FED_ID_MIN ||
144  fed_id > sistrip::FED_ID_MAX ||
145  fed_ch >= sistrip::FEDCH_PER_FED ) { return sistrip::invalid32_; }
146  return ( fed_id * sistrip::FEDCH_PER_FED + fed_ch );
147 }
static const uint16_t FED_ID_MIN
static const uint32_t invalid32_
Definition: Constants.h:16
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 123 of file SiStripFedKey.cc.

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

123  {
124  if ( fed_ch < sistrip::FEDCH_PER_FED ) {
125  return ( (95-fed_ch)/12 + 1 );
126  }
127  return sistrip::invalid_;
128 }
static const uint16_t invalid_
Definition: Constants.h:17
static const uint16_t FEDCH_PER_FED
void SiStripFedKey::initFromKey ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 260 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().

260  {
261 
262  if ( key() == sistrip::invalid32_ ) {
263 
264  // ---------- Set FedKey based on member data ----------
265 
266  // Initialise to null value
267  key(0);
268 
269  // Extract FED id
270  if ( fedId_ >= sistrip::FED_ID_MIN &&
272  key( key() | (fedId_<<fedIdOffset_) );
273  } else if ( fedId_ == 0 ) {
274  key( key() | (fedId_<<fedIdOffset_) );
275  } else {
276  key( key() | (fedIdMask_<<fedIdOffset_) );
277  }
278 
279  // Extract FE unit
280  if ( feUnit_ >= 1 &&
282  key( key() | (feUnit_<<feUnitOffset_) );
283  } else if ( feUnit_ == 0 ) {
284  key( key() | (feUnit_<<feUnitOffset_) );
285  } else {
286  key( key() | (feUnitMask_<<feUnitOffset_) );
287  }
288 
289  // Extract FE chan
290  if ( feChan_ >= 1 &&
292  key( key() | (feChan_<<feChanOffset_) );
293  } else if ( feChan_ == 0 ) {
294  key( key() | (feChan_<<feChanOffset_) );
295  } else {
296  key( key() | (feChanMask_<<feChanOffset_) );
297  }
298 
299  // Extract FED APV
300  if ( fedApv_ >= 1 &&
302  key( key() | (fedApv_<<fedApvOffset_) );
303  } else if ( fedApv_ == 0 ) {
304  key( key() | (fedApv_<<fedApvOffset_) );
305  } else {
306  key( key() | (fedApvMask_<<fedApvOffset_) );
307  }
308 
309  // Set invalid key if necessary
310  if ( fedId_ == sistrip::invalid_ &&
313  fedApv_ == sistrip::invalid_ ) {
315  }
316 
317  } else {
318 
319  // ---------- Set member data based on FED key ----------
320 
321  fedId_ = ( key()>>fedIdOffset_ ) & fedIdMask_;
325 
326  if ( fedId_ == fedIdMask_ ) { fedId_ = sistrip::invalid_; }
327  if ( feUnit_ == feUnitMask_ ) { feUnit_ = sistrip::invalid_; }
328  if ( feChan_ == feChanMask_ ) { feChan_ = sistrip::invalid_; }
329  if ( fedApv_ == fedApvMask_ ) { fedApv_ = sistrip::invalid_; }
330 
331  }
332 
333 }
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:16
const uint32_t & key() const
Definition: SiStripKey.h:126
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:17
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 ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 337 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_, and groupFilesInBlocks::temp.

Referenced by SiStripFedKey().

337  {
338 
339  if ( path() == sistrip::null_ ) {
340 
341  // ---------- Set directory path based on member data ----------
342 
343  std::stringstream dir;
344 
345  dir << sistrip::root_ << sistrip::dir_
347 
348  // Add FED id
349  if ( fedId_ ) {
351 
352  // Add FE unit
353  if ( feUnit_ ) {
355 
356  // Add FE channel
357  if ( feChan_ ) {
359 
360  // Add FED APV
361  if ( fedApv_ ) {
363  }
364  }
365  }
366  }
367 
368  std::string temp( dir.str() );
369  path( temp );
370 
371  } else {
372 
373  // ---------- Set member data based on directory path ----------
374 
375  fedId_ = 0;
376  feUnit_ = 0;
377  feChan_ = 0;
378  fedApv_ = 0;
379 
380  // Check if root is found
381  if ( path().find( sistrip::root_ ) == std::string::npos ) {
382  std::string temp = path();
383  path( std::string(sistrip::root_) + sistrip::dir_ + temp );
384  }
385 
386  size_t curr = 0; // current string position
387  size_t next = 0; // next string position
388  next = path().find( sistrip::readoutView_, curr );
389 
390  // Extract view
391  curr = next;
392  if ( curr != std::string::npos ) {
393  next = path().find( sistrip::feDriver_, curr );
394  std::string readout_view( path(),
395  curr+(sizeof(sistrip::readoutView_) - 1),
396  (next-(sizeof(sistrip::dir_) - 1))-curr );
397 
398  // Extract FED id
399  curr = next;
400  if ( curr != std::string::npos ) {
401  next = path().find( sistrip::feUnit_, curr );
402  std::string fed_id( path(),
403  curr+(sizeof(sistrip::feDriver_) - 1),
404  (next-(sizeof(sistrip::dir_) - 1))-curr );
405  fedId_ = atoi( fed_id.c_str() );
406 
407  // Extract FE unit
408  curr = next;
409  if ( curr != std::string::npos ) {
410  next = path().find( sistrip::feChan_, curr );
411  std::string fe_unit( path(),
412  curr+(sizeof(sistrip::feUnit_) - 1),
413  next-curr );
414  feUnit_ = atoi( fe_unit.c_str() );
415 
416  // Extract FE channel
417  curr = next;
418  if ( curr != std::string::npos ) {
419  next = path().find( sistrip::fedApv_, curr );
420  std::string fe_chan( path(),
421  curr+(sizeof(sistrip::feChan_) - 1),
422  next-curr );
423  feChan_ = atoi( fe_chan.c_str() );
424 
425  // Extract FED APV
426  curr = next;
427  if ( curr != std::string::npos ) {
428  next = std::string::npos;
429  std::string fed_apv( path(),
430  curr+(sizeof(sistrip::fedApv_) - 1),
431  next-curr );
432  fedApv_ = atoi( fed_apv.c_str() );
433  }
434  }
435  }
436  }
437  } else {
438  std::stringstream ss;
439  ss << sistrip::root_ << sistrip::dir_;
440  //ss << sistrip::root_ << sistrip::dir_
441  //<< sistrip::unknownView_ << sistrip::dir_;
442  std::string temp( ss.str() );
443  path( temp );
444  }
445 
446  }
447 
448 }
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:7
uint16_t fedApv_
static const char fedApv_[]
const std::string & path() const
Definition: SiStripKey.h:127
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:23
void SiStripFedKey::initFromValue ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 236 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().

236  {
237 
238  if ( fedId_ >= sistrip::FED_ID_MIN &&
240  fedId_ = fedId_;
241  } else if ( fedId_ == 0 ) {
242  fedId_ = fedId_;
243  } else {
245  }
246 
248  else { feUnit_ = sistrip::invalid_; }
249 
251  else { feChan_ = sistrip::invalid_; }
252 
254  else { fedApv_ = sistrip::invalid_; }
255 
256 }
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:17
static const uint16_t FED_ID_MAX
static const uint16_t APVS_PER_FEDCH
void SiStripFedKey::initGranularity ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 452 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().

452  {
453 
455  channel(0);
456  if ( fedId_ && fedId_ != sistrip::invalid_ ) {
458  channel(fedId_);
459  if ( feUnit_ && feUnit_ != sistrip::invalid_ ) {
461  channel(feUnit_);
462  if ( feChan_ && feChan_ != sistrip::invalid_ ) {
464  channel(feChan_);
465  if ( fedApv_ && fedApv_ != sistrip::invalid_ ) {
467  channel(fedApv_);
468  } else if ( fedApv_ == sistrip::invalid_ ) {
471  }
472  } else if ( feChan_ == sistrip::invalid_ ) {
475  }
476  } else if ( feUnit_ == sistrip::invalid_ ) {
479  }
480  } else if ( fedId_ == sistrip::invalid_ ) {
483  }
484 
485 }
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:128
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
const uint16_t & channel() const
Definition: SiStripKey.h:129
static const uint16_t invalid_
Definition: Constants.h:17
bool SiStripFedKey::isConsistent ( const SiStripKey key) const
virtual

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

Reimplemented from SiStripKey.

Definition at line 165 of file SiStripFedKey.cc.

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

165  {
166  SiStripKey& temp = const_cast<SiStripKey&>(key);
167  SiStripFedKey& input = dynamic_cast<SiStripFedKey&>(temp);
168  if ( !(&input) ) { return false; }
169  if ( isEqual(input) ) { return true; }
170  else if ( ( fedId_ == 0 || input.fedId() == 0 ) &&
171  ( feUnit_ == 0 || input.feUnit() == 0 ) &&
172  ( feChan_ == 0 || input.feChan() == 0 ) &&
173  ( fedApv_ == 0 || input.fedApv() == 0 ) ) {
174  return true;
175  } else { return false; }
176 }
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:57
const uint32_t & key() const
Definition: SiStripKey.h:126
uint16_t fedApv_
bool isEqual(const SiStripKey &) const
Base utility class that identifies a position within a logical structure of the strip tracker...
Definition: SiStripKey.h:24
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
virtual

Identifies key objects with identical member data.

Reimplemented from SiStripKey.

Definition at line 151 of file SiStripFedKey.cc.

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

Referenced by isConsistent().

151  {
152  SiStripKey& temp = const_cast<SiStripKey&>(key);
153  SiStripFedKey& input = dynamic_cast<SiStripFedKey&>(temp);
154  if ( !(&input) ) { return false; }
155  if ( fedId_ == input.fedId() &&
156  feUnit_ == input.feUnit() &&
157  feChan_ == input.feChan() &&
158  fedApv_ == input.fedApv() ) {
159  return true;
160  } else { return false; }
161 }
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:57
const uint32_t & key() const
Definition: SiStripKey.h:126
uint16_t fedApv_
Base utility class that identifies a position within a logical structure of the strip tracker...
Definition: SiStripKey.h:24
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
virtual

Identifies all member data as being invalid.

Reimplemented from SiStripKey.

Definition at line 208 of file SiStripFedKey.cc.

References sistrip::FED_APV.

208  {
209  return isInvalid(sistrip::FED_APV);
210 }
bool isInvalid() const
bool SiStripFedKey::isInvalid ( const sistrip::Granularity gran) const
virtual

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

Reimplemented from SiStripKey.

Definition at line 214 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.

214  {
215  if ( gran == sistrip::FED_SYSTEM ) { return false; }
216  else if ( gran == sistrip::UNDEFINED_GRAN ||
217  gran == sistrip::UNKNOWN_GRAN ) { return false; }
218 
219  if ( fedId_ == sistrip::invalid_ ) {
220  if ( gran == sistrip::FE_DRIVER ) { return true; }
221  if ( feUnit_ == sistrip::invalid_ ) {
222  if ( gran == sistrip::FE_UNIT ) { return true; }
223  if ( feChan_ == sistrip::invalid_ ) {
224  if ( gran == sistrip::FE_CHAN ) { return true; }
225  if ( fedApv_ == sistrip::invalid_ ) {
226  if ( gran == sistrip::FED_APV ) { return true; }
227  }
228  }
229  }
230  }
231  return false;
232 }
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t invalid_
Definition: Constants.h:17
bool SiStripFedKey::isValid ( void  ) const
virtual

Identifies all member data as being "valid" or null ("all").

Reimplemented from SiStripKey.

Definition at line 180 of file SiStripFedKey.cc.

References sistrip::FED_APV.

Referenced by SummaryGeneratorReadoutView::fill(), and print().

180  {
181  return isValid(sistrip::FED_APV);
182 }
bool isValid() const
bool SiStripFedKey::isValid ( const sistrip::Granularity gran) const
virtual

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

Reimplemented from SiStripKey.

Definition at line 186 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.

186  {
187  if ( gran == sistrip::FED_SYSTEM ) { return true; }
188  else if ( gran == sistrip::UNDEFINED_GRAN ||
189  gran == sistrip::UNKNOWN_GRAN ) { return false; }
190 
191  if ( fedId_ != sistrip::invalid_ ) {
192  if ( gran == sistrip::FE_DRIVER ) { return true; }
193  if ( feUnit_ != sistrip::invalid_ ) {
194  if ( gran == sistrip::FE_UNIT ) { return true; }
195  if ( feChan_ != sistrip::invalid_ ) {
196  if ( gran == sistrip::FE_CHAN ) { return true; }
197  if ( fedApv_ != sistrip::invalid_ ) {
198  if ( gran == sistrip::FED_APV ) { return true; }
199  }
200  }
201  }
202  }
203  return false;
204 }
uint16_t fedApv_
uint16_t feChan_
uint16_t fedId_
uint16_t feUnit_
static const uint16_t invalid_
Definition: Constants.h:17
void SiStripFedKey::print ( std::stringstream &  ss) const
virtual

Print member data of the key

Reimplemented from SiStripKey.

Definition at line 514 of file SiStripFedKey.cc.

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

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

514  {
515  ss << " [SiStripFedKey::print]" << std::endl
516  << std::hex
517  << " FED key : 0x"
518  << std::setfill('0')
519  << std::setw(8) << key() << std::endl
520  << std::setfill(' ')
521  << std::dec
522  << " FED id : " << fedId() << std::endl
523  << " Front-End unit : " << feUnit() << std::endl
524  << " Front-End chan : " << feChan() << std::endl
525  << " (internal chan) : "
526  << "(" << fedChannel() << ")" << std::endl
527  << " FED APV : " << fedApv() << std::endl
528  << " Directory : " << path() << std::endl
529  << " Granularity : "
531  << " Channel : " << channel() << std::endl
532  << " isValid : " << isValid();
533 }
static std::string granularity(const sistrip::Granularity &)
const uint32_t & key() const
Definition: SiStripKey.h:126
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:128
bool isValid() const
const std::string & path() const
Definition: SiStripKey.h:127
uint16_t fedChannel() const
const uint16_t & fedApv() const
const uint16_t & feUnit() const
const uint16_t & channel() const
Definition: SiStripKey.h:129
const uint16_t & feChan() const
const uint16_t & fedId() const
void SiStripFedKey::terse ( std::stringstream &  ss) const
virtual

A terse summary of the key

Reimplemented from SiStripKey.

Definition at line 489 of file SiStripFedKey.cc.

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

489  {
490  ss << "FED:crate/slot/id/unit/chan/apv= "
491  << "-" << "/"
492  << "-" << "/"
493  << fedId() << "/"
494  << feUnit() << "/"
495  << feChan() << "/"
496  << fedApv();
497 // ss << " FedKey"
498 // //<<"=0x"
499 // //<< std::hex
500 // //<< std::setfill('0') << std::setw(8) << key() << std::setfill(' ')
501 // //<< std::dec
502 // //<< ", " << ( isValid() ? "Valid" : "Invalid" )
503 // //<< ", FedCrate=" << fedCrate()
504 // //<< ", FedSlot=" << fedSlot()
505 // << ", FedId=" << fedId()
506 // << ", FeUnit=" << feUnit()
507 // << ", FeChan=" << feChan()
508 // //<< ", FedChannel=" << fedChannel()
509 // << ", FedApv=" << fedApv();
510 }
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 188 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::feChanOffset_ = 2
staticprivate

Definition at line 180 of file SiStripFedKey.h.

Referenced by initFromKey().

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

Definition at line 189 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedApvOffset_ = 0
staticprivate

Definition at line 181 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedCrateMask_ = 0x03F
staticprivate

Definition at line 184 of file SiStripFedKey.h.

const uint16_t SiStripFedKey::fedCrateOffset_ = 24
staticprivate

Definition at line 176 of file SiStripFedKey.h.

uint16_t SiStripFedKey::fedId_
private

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

Definition at line 164 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 186 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedIdOffset_ = 10
staticprivate

Definition at line 178 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::fedSlotMask_ = 0x01F
staticprivate

Definition at line 185 of file SiStripFedKey.h.

const uint16_t SiStripFedKey::fedSlotOffset_ = 19
staticprivate

Definition at line 177 of file SiStripFedKey.h.

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

Definition at line 187 of file SiStripFedKey.h.

Referenced by initFromKey().

const uint16_t SiStripFedKey::feUnitOffset_ = 6
staticprivate

Definition at line 179 of file SiStripFedKey.h.

Referenced by initFromKey().