CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
SiStripDetKey Class Reference

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

#include <SiStripDetKey.h>

Inheritance diagram for SiStripDetKey:
SiStripKey

Public Member Functions

const uint16_t & apvPairNumber () const
 
const uint16_t & apvWithinPair () 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
 
const uint16_t & partition () const
 
virtual void print (std::stringstream &ss) const
 
 SiStripDetKey (const uint16_t &partition)
 
 SiStripDetKey (const DetId &det_id, const uint16_t &apv_pair_number=0, const uint16_t &apv_within_pair=0)
 
 SiStripDetKey (const SiStripDetId &det_id)
 
 SiStripDetKey (const uint32_t &det_key)
 
 SiStripDetKey (const std::string &directory_path)
 
 SiStripDetKey (const SiStripDetKey &)
 
 SiStripDetKey (const SiStripKey &)
 
 SiStripDetKey (const SiStripKey &, const sistrip::Granularity &)
 
 SiStripDetKey ()
 
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 ()
 

Private Member Functions

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

Private Attributes

uint16_t apvPairNumber_
 
uint16_t apvWithinPair_
 
uint16_t partition_
 

Static Private Attributes

static const uint16_t partitionMask_ = 0x07
 
static const uint16_t partitionOffset_ = 29
 

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

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

Author
R.Bainbridge, S.Lowette

NOTA BENE: *** NOT FINISHED ***

can generate another key that is NOT DetId and packs sistrip-specific data in a more condensed way, so that all levels can be encoded with "all" and "invalid" values, down to level of apv. also, need "conversion tool" that re-generates DetId key from this new key. this is only way...!!! maybe can "safeguard" use of this key as a DetId by reserving bits 22-24 as a flag (eg, set all high), so that if an attempt to build DetId using SiStripDetId class, we can understand if key is real DetId or not... what about going to level of apv?... what about levels about module?...

Definition at line 28 of file SiStripDetKey.h.

Constructor & Destructor Documentation

SiStripDetKey::SiStripDetKey ( const uint16_t &  partition)

Constructor using partition.

Definition at line 9 of file SiStripDetKey.cc.

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

9  :
10  SiStripKey(),
14 {
15  // order is important!
16  initFromValue();
17  initFromKey();
18  initFromPath();
20 }
uint16_t apvPairNumber_
void initFromValue()
const uint16_t & partition() const
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t apvWithinPair_
void initGranularity()
uint16_t partition_
SiStripDetKey::SiStripDetKey ( const DetId det_id,
const uint16_t &  apv_pair_number = 0,
const uint16_t &  apv_within_pair = 0 
)

Constructor using DetId, APV pair and APV pos within pair.

Definition at line 24 of file SiStripDetKey.cc.

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

26  :
27  SiStripKey(),
29  apvPairNumber_(apv_pair_number),
30  apvWithinPair_(apv_within_pair)
31 {
32  // order is important!
33  initFromValue();
34  initFromKey();
35  initFromPath();
37 }
uint16_t apvPairNumber_
void initFromValue()
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t apvWithinPair_
void initGranularity()
uint16_t partition_
SiStripDetKey::SiStripDetKey ( const SiStripDetId det_id)

Constructor using SiStripDetId.

Definition at line 41 of file SiStripDetKey.cc.

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

41  :
42  SiStripKey(),
46 {
47  // order is important!
48  initFromValue();
49  initFromKey();
50  initFromPath();
52 }
uint16_t apvPairNumber_
void initFromValue()
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t apvWithinPair_
void initGranularity()
uint16_t partition_
SiStripDetKey::SiStripDetKey ( const uint32_t &  det_key)

Constructor using 32-bit "DET key".

Definition at line 56 of file SiStripDetKey.cc.

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

56  :
57  SiStripKey(det_key),
61 {
62  // order is important!
63  initFromKey();
64  initFromValue();
65  initFromPath();
67 }
uint16_t apvPairNumber_
void initFromValue()
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t apvWithinPair_
void initGranularity()
uint16_t partition_
SiStripDetKey::SiStripDetKey ( const std::string &  directory_path)

Constructor using directory path.

Definition at line 71 of file SiStripDetKey.cc.

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

71  :
76 {
77  // order is important!
78  initFromPath();
79  initFromValue();
80  initFromKey();
82 }
uint16_t apvPairNumber_
void initFromValue()
const std::string & path() const
Definition: SiStripKey.h:126
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t apvWithinPair_
void initGranularity()
uint16_t partition_
SiStripDetKey::SiStripDetKey ( const SiStripDetKey input)

Copy constructor.

Definition at line 86 of file SiStripDetKey.cc.

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

86  :
87  SiStripKey(),
88  partition_(input.partition()),
89  apvPairNumber_(input.apvPairNumber()),
91 {
92  key(input.key());
93  path(input.path());
94  granularity(input.granularity());
95 }
uint16_t apvPairNumber_
const uint32_t & key() const
Definition: SiStripKey.h:125
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:127
const uint16_t & partition() const
const uint16_t & apvWithinPair() const
const std::string & path() const
Definition: SiStripKey.h:126
const uint16_t & apvPairNumber() const
uint16_t apvWithinPair_
uint16_t partition_
SiStripDetKey::SiStripDetKey ( const SiStripKey input)

Copy constructor using base class.

Definition at line 99 of file SiStripDetKey.cc.

References apvPairNumber(), apvPairNumber_, apvWithinPair(), apvWithinPair_, SiStripKey::granularity(), input, SiStripKey::key(), partition(), partition_, and SiStripKey::path().

99  :
100  SiStripKey(),
104 {
105  const SiStripDetKey& det_key = dynamic_cast<const SiStripDetKey&>(input);
106  if ( (&det_key) ) {
107  key(det_key.key());
108  path(det_key.path());
109  granularity(det_key.granularity());
110  partition_ = det_key.partition();
111  apvPairNumber_ = det_key.apvPairNumber();
112  apvWithinPair_ = det_key.apvWithinPair();
113  }
114 }
uint16_t apvPairNumber_
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
const uint16_t & partition() const
const uint16_t & apvWithinPair() const
const std::string & path() const
Definition: SiStripKey.h:126
const uint16_t & apvPairNumber() const
Utility class that identifies a position within the strip tracker geometrical structure, down to the level of an APV25 chip.
Definition: SiStripDetKey.h:28
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t apvWithinPair_
uint16_t partition_
SiStripDetKey::SiStripDetKey ( const SiStripKey input,
const sistrip::Granularity gran 
)

Copy to level specified by granularity.

Definition at line 118 of file SiStripDetKey.cc.

References initFromKey(), initFromPath(), initFromValue(), initGranularity(), input, sistrip::PARTITION, partition(), and partition_.

119  :
120  SiStripKey(),
121  partition_(0),
122  apvPairNumber_(0),
123  apvWithinPair_(0)
124 {
125  const SiStripDetKey& det_key = dynamic_cast<const SiStripDetKey&>(input);
126  if ( (&det_key) ) {
127 
128  if ( gran == sistrip::PARTITION ) {
129  partition_ = det_key.partition();
130  }
131 
132  initFromValue();
133  initFromKey();
134  initFromPath();
135  initGranularity();
136 
137  }
138 
139 }
uint16_t apvPairNumber_
static std::string const input
Definition: EdmProvDump.cc:44
void initFromValue()
const uint16_t & partition() const
Utility class that identifies a position within the strip tracker geometrical structure, down to the level of an APV25 chip.
Definition: SiStripDetKey.h:28
uint16_t apvWithinPair_
void initGranularity()
uint16_t partition_
SiStripDetKey::SiStripDetKey ( )

Default constructor

Definition at line 143 of file SiStripDetKey.cc.

143  :
144  SiStripKey(),
148 {;}
uint16_t apvPairNumber_
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t apvWithinPair_
uint16_t partition_

Member Function Documentation

const uint16_t & SiStripDetKey::apvPairNumber ( ) const
inline

Returns APV pair number.

Definition at line 142 of file SiStripDetKey.h.

References apvPairNumber_.

Referenced by isConsistent(), isEqual(), and SiStripDetKey().

142 { return apvPairNumber_; }
uint16_t apvPairNumber_
const uint16_t & SiStripDetKey::apvWithinPair ( ) const
inline

Returns APV position within pair.

Definition at line 143 of file SiStripDetKey.h.

References apvWithinPair_.

Referenced by isConsistent(), isEqual(), and SiStripDetKey().

143 { return apvWithinPair_; }
uint16_t apvWithinPair_
void SiStripDetKey::initFromKey ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 229 of file SiStripDetKey.cc.

References sistrip::invalid32_, sistrip::invalid_, SiStripKey::key(), partition_, partitionMask_, and partitionOffset_.

Referenced by SiStripDetKey().

229  {
230 
231  if ( key() == sistrip::invalid32_ ) {
232 
233  // ---------- Set DetKey based on member data ----------
234 
235  // Initialise to null value
236  key(0);
237 
238  // Extract partition
239  if ( partition_ >= 1 && //sistrip::PARTITION_MIN &&
240  partition_ <= 4 ) { //sistrip::PARTITION_MAX ) {
242  } else if ( partition_ == 0 ) {
244  } else {
246  }
247 
248  } else {
249 
250  // ---------- Set member data based on Det key ----------
251 
253 
255 
256  }
257 
258 }
static const uint32_t invalid32_
Definition: Constants.h:15
static const uint16_t partitionOffset_
const uint32_t & key() const
Definition: SiStripKey.h:125
static const uint16_t partitionMask_
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t partition_
void SiStripDetKey::initFromPath ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 262 of file SiStripDetKey.cc.

References sistrip::detectorView_, dir, sistrip::dir_, spr::find(), GetRecoTauVFromDQM_MC_cff::next, sistrip::null_, partition(), sistrip::partition_, partition_, SiStripKey::path(), sistrip::root_, AlCaHLTBitMon_QueryRunRegistry::string, and groupFilesInBlocks::temp.

Referenced by SiStripDetKey().

262  {
263 
264  if ( path() == sistrip::null_ ) {
265 
266  // ---------- Set directory path based on member data ----------
267 
268  std::stringstream dir;
269 
270  dir << sistrip::root_ << sistrip::dir_
272 
273  // Add partition
274  if ( partition_ ) {
276  }
277 
278  std::string temp( dir.str() );
279  path( temp );
280 
281  } else {
282 
283  // ---------- Set member data based on directory path ----------
284 
285  partition_ = 0;
286 
287  // Check if root is found
288  if ( path().find( sistrip::root_ ) == std::string::npos ) {
289  std::string temp = path();
290  path( std::string(sistrip::root_) + sistrip::dir_ + temp );
291  }
292 
293  size_t curr = 0; // current string position
294  size_t next = 0; // next string position
295  next = path().find( sistrip::detectorView_, curr );
296 
297  // Extract view
298  curr = next;
299  if ( curr != std::string::npos ) {
300  next = path().find( sistrip::partition_, curr );
301  std::string detector_view( path(),
302  curr+(sizeof(sistrip::detectorView_) - 1),
303  next-(sizeof(sistrip::dir_) - 1)-curr );
304  // Extract partition
305  curr = next;
306  if ( curr != std::string::npos ) {
307  next = std::string::npos;
309  curr+(sizeof(sistrip::partition_) - 1),
310  next-(sizeof(sistrip::dir_) - 1)-curr );
311  partition_ = std::atoi( partition.c_str() );
312  }
313  } else {
314  std::stringstream ss;
315  ss << sistrip::root_ << sistrip::dir_;
316  //ss << sistrip::root_ << sistrip::dir_
317  //<< sistrip::unknownView_ << sistrip::dir_;
318  std::string temp( ss.str() );
319  path( temp );
320  }
321 
322  }
323 
324 }
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
static const char detectorView_[]
static const char partition_[]
const uint16_t & partition() const
const std::string & path() const
Definition: SiStripKey.h:126
static const char root_[]
dbl *** dir
Definition: mlp_gen.cc:35
uint16_t partition_
static const char null_[]
Definition: Constants.h:22
void SiStripDetKey::initFromValue ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 215 of file SiStripDetKey.cc.

References sistrip::invalid_, and partition_.

Referenced by SiStripDetKey().

215  {
216 
217  // partition
218  if ( partition_ >= 1 && //sistrip::PARTITION_MIN &&
219  partition_ <= 4 ) { //sistrip::PARTITION_MAX ) {
221  } else if ( partition_ == 0 ) {
222  partition_ = 0;
223  } else { partition_ = sistrip::invalid_; }
224 
225 }
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t partition_
void SiStripDetKey::initGranularity ( )
privatevirtual

Reimplemented from SiStripKey.

Definition at line 328 of file SiStripDetKey.cc.

References SiStripKey::channel(), SiStripKey::granularity(), sistrip::invalid_, sistrip::PARTITION, partition_, sistrip::TRACKER, and sistrip::UNKNOWN_GRAN.

Referenced by SiStripDetKey().

328  {
329 
331  channel(0);
335  } else if ( partition_ == sistrip::invalid_ ) {
338  }
339 
340 }
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:127
const uint16_t & channel() const
Definition: SiStripKey.h:128
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t partition_
bool SiStripDetKey::isConsistent ( const SiStripKey key) const
virtual

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

Reimplemented from SiStripKey.

Definition at line 164 of file SiStripDetKey.cc.

References apvPairNumber(), apvPairNumber_, apvWithinPair(), apvWithinPair_, input, isEqual(), SiStripKey::key(), partition(), and partition_.

164  {
165  const SiStripDetKey& input = dynamic_cast<const SiStripDetKey&>(key);
166  if ( !(&input) ) { return false; }
167  if ( isEqual(input) ) { return false; }
168  else if ( ( partition_ == 0 || input.partition() == 0 ) &&
169  ( apvPairNumber_ == 0 || input.apvPairNumber() == 0 ) &&
170  ( apvWithinPair_ == 0 || input.apvWithinPair() == 0 ) ) {
171  return true;
172  } else { return false; }
173 }
uint16_t apvPairNumber_
static std::string const input
Definition: EdmProvDump.cc:44
const uint32_t & key() const
Definition: SiStripKey.h:125
const uint16_t & partition() const
const uint16_t & apvWithinPair() const
const uint16_t & apvPairNumber() const
Utility class that identifies a position within the strip tracker geometrical structure, down to the level of an APV25 chip.
Definition: SiStripDetKey.h:28
bool isEqual(const SiStripKey &) const
uint16_t apvWithinPair_
uint16_t partition_
bool SiStripDetKey::isEqual ( const SiStripKey key) const
virtual

Identifies key objects with identical member data.

Reimplemented from SiStripKey.

Definition at line 152 of file SiStripDetKey.cc.

References apvPairNumber(), apvPairNumber_, apvWithinPair(), apvWithinPair_, input, SiStripKey::key(), partition(), and partition_.

Referenced by isConsistent().

152  {
153  const SiStripDetKey& input = dynamic_cast<const SiStripDetKey&>(key);
154  if ( !(&input) ) { return false; }
155  if ( partition_ == input.partition() &&
156  apvPairNumber_ == input.apvPairNumber() &&
157  apvWithinPair_ == input.apvWithinPair() ) {
158  return true;
159  } else { return false; }
160 }
uint16_t apvPairNumber_
static std::string const input
Definition: EdmProvDump.cc:44
const uint32_t & key() const
Definition: SiStripKey.h:125
const uint16_t & partition() const
const uint16_t & apvWithinPair() const
const uint16_t & apvPairNumber() const
Utility class that identifies a position within the strip tracker geometrical structure, down to the level of an APV25 chip.
Definition: SiStripDetKey.h:28
uint16_t apvWithinPair_
uint16_t partition_
bool SiStripDetKey::isInvalid ( ) const
virtual

Identifies all member data as being invalid.

Reimplemented from SiStripKey.

Definition at line 196 of file SiStripDetKey.cc.

References sistrip::APV.

196  {
197  return isInvalid(sistrip::APV);
198 }
bool isInvalid() const
bool SiStripDetKey::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 202 of file SiStripDetKey.cc.

References sistrip::invalid_, sistrip::PARTITION, partition_, sistrip::TRACKER, sistrip::UNDEFINED_GRAN, and sistrip::UNKNOWN_GRAN.

202  {
203  if ( gran == sistrip::TRACKER ) { return false; }
204  else if ( gran == sistrip::UNDEFINED_GRAN ||
205  gran == sistrip::UNKNOWN_GRAN ) { return false; }
206 
207  if ( partition_ == sistrip::invalid_ ) {
208  if ( gran == sistrip::PARTITION ) { return true; }
209  }
210  return false;
211 }
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t partition_
bool SiStripDetKey::isValid ( void  ) const
virtual

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

Reimplemented from SiStripKey.

Definition at line 177 of file SiStripDetKey.cc.

References sistrip::APV.

Referenced by print().

177  {
178  return isValid(sistrip::APV);
179 }
bool isValid() const
bool SiStripDetKey::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 183 of file SiStripDetKey.cc.

References sistrip::invalid_, sistrip::PARTITION, partition_, sistrip::TRACKER, sistrip::UNDEFINED_GRAN, and sistrip::UNKNOWN_GRAN.

183  {
184  if ( gran == sistrip::TRACKER ) { return true; }
185  else if ( gran == sistrip::UNDEFINED_GRAN ||
186  gran == sistrip::UNKNOWN_GRAN ) { return false; }
187 
188  if ( partition_ != sistrip::invalid_ ) {
189  if ( gran == sistrip::PARTITION ) { return true; }
190  }
191  return false;
192 }
static const uint16_t invalid_
Definition: Constants.h:16
uint16_t partition_
const uint16_t & SiStripDetKey::partition ( ) const
inline

Returns partition.

Definition at line 141 of file SiStripDetKey.h.

References partition_.

Referenced by initFromPath(), isConsistent(), isEqual(), print(), SiStripDetKey(), and terse().

141 { return partition_; }
uint16_t partition_
void SiStripDetKey::print ( std::stringstream &  ss) const
virtual

Print member data of the key

Reimplemented from SiStripKey.

Definition at line 351 of file SiStripDetKey.cc.

References SiStripKey::channel(), SiStripEnumsAndStrings::granularity(), SiStripKey::granularity(), isValid(), SiStripKey::key(), partition(), and SiStripKey::path().

Referenced by operator<<().

351  {
352  ss << " [SiStripDetKey::print]" << std::endl
353  << std::hex
354  << " 32-bit Det key : 0x"
355  << std::setfill('0')
356  << std::setw(8) << key() << std::endl
357  << std::setfill(' ')
358  << std::dec
359  << " Partition : " << partition() << std::endl
360  << " Directory : " << path() << std::endl
361  << " Granularity : "
363  << " Channel : " << channel() << std::endl
364  << " isValid : " << isValid();
365 }
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 uint16_t & partition() const
const std::string & path() const
Definition: SiStripKey.h:126
const uint16_t & channel() const
Definition: SiStripKey.h:128
bool isValid() const
void SiStripDetKey::terse ( std::stringstream &  ss) const
virtual

A terse summary of the key

Reimplemented from SiStripKey.

Definition at line 344 of file SiStripDetKey.cc.

References partition().

344  {
345  ss << "DET:partition= "
346  << partition();
347 }
const uint16_t & partition() const

Member Data Documentation

uint16_t SiStripDetKey::apvPairNumber_
private

APV pair number [0,1-3,invalid].

Definition at line 126 of file SiStripDetKey.h.

Referenced by apvPairNumber(), isConsistent(), isEqual(), and SiStripDetKey().

uint16_t SiStripDetKey::apvWithinPair_
private

APV position within pair [0,1-2,invalid].

Definition at line 129 of file SiStripDetKey.h.

Referenced by apvWithinPair(), isConsistent(), isEqual(), and SiStripDetKey().

uint16_t SiStripDetKey::partition_
private
const uint16_t SiStripDetKey::partitionMask_ = 0x07
staticprivate

Definition at line 135 of file SiStripDetKey.h.

Referenced by initFromKey().

const uint16_t SiStripDetKey::partitionOffset_ = 29
staticprivate

Definition at line 132 of file SiStripDetKey.h.

Referenced by initFromKey().