CMS 3D CMS Logo

TrackerTopology.h
Go to the documentation of this file.
1 #ifndef TRACKERTOPOLOGY_H
2 #define TRACKERTOPOLOGY_H
3 
8 
9 #include <vector>
10 #include <string>
11 
12 //knower of all things tracker geometry
13 //flexible replacement for PXBDetId and friends
14 //to implement
15 // endcap pixel
16 
17 
19 
20  public:
21 
23  unsigned int layerStartBit_;
24  unsigned int ladderStartBit_;
25  unsigned int moduleStartBit_;
26  unsigned int layerMask_;
27  unsigned int ladderMask_;
28  unsigned int moduleMask_;
29  };
30 
32  unsigned int sideStartBit_;
33  unsigned int diskStartBit_;
34  unsigned int bladeStartBit_;
35  unsigned int panelStartBit_;
36  unsigned int moduleStartBit_;
37  unsigned int sideMask_;
38  unsigned int diskMask_;
39  unsigned int bladeMask_;
40  unsigned int panelMask_;
41  unsigned int moduleMask_;
42  };
43 
44  struct TECValues {
45  unsigned int sideStartBit_;
46  unsigned int wheelStartBit_;
47  unsigned int petal_fw_bwStartBit_;
48  unsigned int petalStartBit_;
49  unsigned int ringStartBit_;
50  unsigned int moduleStartBit_;
51  unsigned int sterStartBit_;
52  unsigned int sideMask_;
53  unsigned int wheelMask_;
54  unsigned int petal_fw_bwMask_;
55  unsigned int petalMask_;
56  unsigned int ringMask_;
57  unsigned int moduleMask_;
58  unsigned int sterMask_;
59  };
60 
61  struct TIBValues {
62  unsigned int layerStartBit_;
63  unsigned int str_fw_bwStartBit_;
64  unsigned int str_int_extStartBit_;
65  unsigned int strStartBit_;
66  unsigned int moduleStartBit_;
67  unsigned int sterStartBit_;
68 
69  unsigned int layerMask_;
70  unsigned int str_fw_bwMask_;
71  unsigned int str_int_extMask_;
72  unsigned int strMask_;
73  unsigned int moduleMask_;
74  unsigned int sterMask_;
75  };
76 
77  struct TIDValues {
78  unsigned int sideStartBit_;
79  unsigned int wheelStartBit_;
80  unsigned int ringStartBit_;
81  unsigned int module_fw_bwStartBit_;
82  unsigned int moduleStartBit_;
83  unsigned int sterStartBit_;
84  unsigned int sideMask_;
85  unsigned int wheelMask_;
86  unsigned int ringMask_;
87  unsigned int module_fw_bwMask_;
88  unsigned int moduleMask_;
89  unsigned int sterMask_;
90  };
91 
92  struct TOBValues {
93  unsigned int layerStartBit_;
94  unsigned int rod_fw_bwStartBit_;
95  unsigned int rodStartBit_;
96  unsigned int moduleStartBit_;
97  unsigned int sterStartBit_;
98  unsigned int layerMask_;
99  unsigned int rod_fw_bwMask_;
100  unsigned int rodMask_;
101  unsigned int moduleMask_;
102  unsigned int sterMask_;
103  };
104 
105  enum DetIdFields {
108  /* TODO: this can be extended for all subdetectors */
110  };
111 
113  public:
114  explicit SameLayerComparator(const TrackerTopology *topo): topo_(topo) {}
115 
116  bool operator()(DetId i1, DetId i2) const {
117  if(i1.det() == i2.det() &&
118  i1.subdetId() == i2.subdetId() &&
119  topo_->side(i1) == topo_->side(i2) &&
120  topo_->layer(i1) == topo_->layer(i2)) {
121  return false;
122  }
123  return i1 < i2;
124  }
125 
126  bool operator()(uint32_t i1, uint32_t i2) const {
127  return operator()(DetId(i1), DetId(i2));
128  }
129  private:
131  };
132 
133 
134  TrackerTopology( const PixelBarrelValues& pxb, const PixelEndcapValues& pxf,
135  const TECValues& tecv, const TIBValues& tibv,
136  const TIDValues& tidv, const TOBValues& tobv);
137 
138  unsigned int side(const DetId &id) const;
139  unsigned int layer(const DetId &id) const;
140  unsigned int module(const DetId &id) const;
141 
142 
143  // layer numbers
144  unsigned int pxbLayer(const DetId &id) const {
145  return int((id.rawId()>>pbVals_.layerStartBit_) & pbVals_.layerMask_);
146  }
147  unsigned int tobLayer(const DetId &id) const {
148  return int((id.rawId()>>tobVals_.layerStartBit_) & tobVals_.layerMask_);
149  }
150  unsigned int tibLayer(const DetId &id) const {
151  return int((id.rawId()>>tibVals_.layerStartBit_) & tibVals_.layerMask_);
152  }
153 
154  //ladder
155  unsigned int pxbLadder(const DetId &id) const {
156  return ((id.rawId()>>pbVals_.ladderStartBit_) & pbVals_.ladderMask_) ;
157  }
158 
159  //module
160  unsigned int pxbModule(const DetId &id) const {
161  return ((id.rawId()>>pbVals_.moduleStartBit_)& pbVals_.moduleMask_);
162  }
163  unsigned int pxfModule(const DetId &id) const {
164  return int((id.rawId()>>pfVals_.moduleStartBit_) & pfVals_.moduleMask_);
165  }
166  unsigned int tobModule(const DetId &id) const {
167  return ((id.rawId()>>tobVals_.moduleStartBit_)& tobVals_.moduleMask_);
168  }
169  unsigned int tecModule(const DetId &id) const {
170  return ((id.rawId()>>tecVals_.moduleStartBit_) & tecVals_.moduleMask_);
171  }
172  unsigned int tibModule(const DetId &id) const {
173  return ((id.rawId()>>tibVals_.moduleStartBit_)& tibVals_.moduleMask_);
174  }
175  unsigned int tidModule(const DetId &id) const {
176  return ((id.rawId()>>tidVals_.moduleStartBit_)& tidVals_.moduleMask_);
177  }
178 
179  //side
180  unsigned int tobSide(const DetId &id) const {
181  return ((id.rawId()>>tobVals_.rod_fw_bwStartBit_) & tobVals_.rod_fw_bwMask_);
182  }
183 
184  unsigned int tecSide(const DetId &id) const {
185  return ((id.rawId()>>tecVals_.sideStartBit_)&tecVals_.sideMask_);
186  }
187 
188  unsigned int tibSide(const DetId &id) const {
189  return ((id.rawId()>>tibVals_.str_fw_bwStartBit_) & tibVals_.str_fw_bwMask_);
190  }
191 
192  unsigned int tidSide(const DetId &id) const {
193  return ((id.rawId()>>tidVals_.sideStartBit_)&tidVals_.sideMask_);
194  }
195 
196  unsigned int pxfSide(const DetId &id) const {
197  return ((id.rawId()>>pfVals_.sideStartBit_)&pfVals_.sideMask_);
198  }
199 
200  //rod
201  unsigned int tobRod(const DetId &id) const {
202  return ((id.rawId()>>tobVals_.rodStartBit_) & tobVals_.rodMask_);
203  }
204 
205  //wheel
206  unsigned int tecWheel(const DetId &id) const {
207  return ((id.rawId()>>tecVals_.wheelStartBit_) & tecVals_.wheelMask_) ;
208  }
209  unsigned int tidWheel(const DetId &id) const {
210  return ((id.rawId()>>tidVals_.wheelStartBit_) & tidVals_.wheelMask_) ;
211  }
212 
213  //order
214  unsigned int tecOrder(const DetId &id) const {
215  return ((id.rawId()>>tecVals_.petal_fw_bwStartBit_) & tecVals_.petal_fw_bwMask_);
216  }
217  unsigned int tibOrder(const DetId &id) const {
218  return ((id.rawId()>>tibVals_.str_int_extStartBit_) & tibVals_.str_int_extMask_);
219  }
220  unsigned int tidOrder(const DetId &id) const {
221  return ((id.rawId()>>tidVals_.module_fw_bwStartBit_) & tidVals_.module_fw_bwMask_);
222  }
223 
224 
226  unsigned int tecRing(const DetId &id) const {
227  return ((id.rawId()>>tecVals_.ringStartBit_) & tecVals_.ringMask_) ;
228  }
229  unsigned int tidRing(const DetId &id) const {
230  return ((id.rawId()>>tidVals_.ringStartBit_) & tidVals_.ringMask_) ;
231  }
232 
233 
234  //petal
235  unsigned int tecPetalNumber(const DetId &id) const
236  { return ((id.rawId()>>tecVals_.petalStartBit_) & tecVals_.petalMask_);}
237 
238 
239 
240 
241  //misc tob
242  std::vector<unsigned int> tobRodInfo(const DetId &id) const {
243  std::vector<unsigned int> num;
244  num.push_back( tobSide(id) );
245  num.push_back( tobRod(id) );
246  return num ;
247  }
248 
249  //generic function to return DetIds and boolean factors
250  uint32_t glued(const DetId &id) const ;
251  uint32_t stack(const DetId &id) const ;
252  uint32_t lower(const DetId &id) const ;
253  uint32_t upper(const DetId &id) const ;
254 
255  bool isStereo(const DetId &id) const;
256  bool isRPhi(const DetId &id) const;
257  bool isLower(const DetId &id) const;
258  bool isUpper(const DetId &id) const;
259 
260  //specific function to return boolean factors
261  bool tobIsDoubleSide(const DetId &id) const { return tobGlued(id)==0 && (tobLayer(id)==1 || tobLayer(id)==2);}
262  bool tecIsDoubleSide(const DetId &id) const { return tecGlued(id)==0 && (tecRing(id)==1 || tecRing(id)==2 || tecRing(id)==5);}
263  bool tibIsDoubleSide(const DetId &id) const { return tibGlued(id)==0 && (tibLayer(id)==1 || tibLayer(id)==2);}
264  bool tidIsDoubleSide(const DetId &id) const { return tidGlued(id)==0 && (tidRing(id)==1 || tidRing(id)==2);}
265 
266  bool tobIsZPlusSide(const DetId &id) const {return !tobIsZMinusSide(id);}
267  bool tobIsZMinusSide(const DetId &id) const { return tobSide(id)==1;}
268 
269  bool tibIsZPlusSide(const DetId &id) const {return !tibIsZMinusSide(id);}
270  bool tibIsZMinusSide(const DetId &id) const { return tibSide(id)==1;}
271 
272  bool tidIsZPlusSide(const DetId &id) const {return !tidIsZMinusSide(id);}
273  bool tidIsZMinusSide(const DetId &id) const { return tidSide(id)==1;}
274 
275  bool tecIsZPlusSide(const DetId &id) const {return !tecIsZMinusSide(id);}
276  bool tecIsZMinusSide(const DetId &id) const { return tecSide(id)==1;}
277 
278  bool tobIsStereo(const DetId &id) const {return tobStereo(id)!=0 && !tobIsDoubleSide(id);}
279  bool tecIsStereo(const DetId &id) const {return tecStereo(id)!=0 && !tecIsDoubleSide(id);}
280  bool tibIsStereo(const DetId &id) const {return tibStereo(id)!=0 && !tibIsDoubleSide(id);}
281  bool tidIsStereo(const DetId &id) const {return tidStereo(id)!=0 && !tidIsDoubleSide(id);}
282 
283  bool tobIsRPhi(const DetId &id) const { return tobRPhi(id)!=0 && !tobIsDoubleSide(id);}
284  bool tecIsRPhi(const DetId &id) const { return tecRPhi(id)!=0 && !tecIsDoubleSide(id);}
285  bool tibIsRPhi(const DetId &id) const { return tibRPhi(id)!=0 && !tibIsDoubleSide(id);}
286  bool tidIsRPhi(const DetId &id) const { return tidRPhi(id)!=0 && !tidIsDoubleSide(id);}
287 
288  //phase0 stereo
289  uint32_t tobStereo(const DetId &id) const {
290  return ( ((id.rawId() >>tobVals_.sterStartBit_ ) & tobVals_.sterMask_ ) == 1 ) ? 1 : 0;
291  }
292 
293  uint32_t tibStereo(const DetId &id) const {
294  return ( ((id.rawId() >>tibVals_.sterStartBit_ ) & tibVals_.sterMask_ ) == 1 ) ? 1 : 0;
295  }
296 
297  uint32_t tidStereo(const DetId &id) const {
298  return ( ((id.rawId() >>tidVals_.sterStartBit_ ) & tidVals_.sterMask_ ) == 1 ) ? 1 : 0;
299  }
300 
301  uint32_t tecStereo(const DetId &id) const {
302  return ( ((id.rawId() >>tecVals_.sterStartBit_ ) & tecVals_.sterMask_ ) == 1 ) ? 1 : 0;
303  }
304 
305  //phase0 stereo == phase2 lower
306  uint32_t tibLower(const DetId &id) const { return tibStereo(id); }
307  uint32_t tidLower(const DetId &id) const { return tidStereo(id); }
308  uint32_t tobLower(const DetId &id) const { return tobStereo(id); }
309  uint32_t tecLower(const DetId &id) const { return tecStereo(id); }
310 
311  //phase0 rphi
312  uint32_t tobRPhi(const DetId &id) const {
313  if ( ((id.rawId() >>tobVals_.sterStartBit_ ) & tobVals_.sterMask_ ) == 2 ) {
314  return ( (id.rawId()>>tobVals_.sterStartBit_) & tobVals_.sterMask_ );
315  } else { return 0; }
316  }
317 
318  uint32_t tibRPhi(const DetId &id) const {
319  if ( ((id.rawId() >>tibVals_.sterStartBit_ ) & tibVals_.sterMask_ ) == 2 ) {
320  return ( (id.rawId()>>tibVals_.sterStartBit_) & tibVals_.sterMask_ );
321  } else { return 0; }
322  }
323 
324  uint32_t tidRPhi(const DetId &id) const {
325  if ( ((id.rawId() >>tidVals_.sterStartBit_ ) & tidVals_.sterMask_ ) == 2 ) {
326  return ( (id.rawId()>>tidVals_.sterStartBit_) & tidVals_.sterMask_ );
327  } else { return 0; }
328  }
329 
330  uint32_t tecRPhi(const DetId &id) const {
331  if ( ((id.rawId() >>tecVals_.sterStartBit_ ) & tecVals_.sterMask_ ) == 2 ) {
332  return ( (id.rawId()>>tecVals_.sterStartBit_) & tecVals_.sterMask_ );
333  } else { return 0; }
334  }
335 
336  //phase0 rphi == phase2 upper
337  uint32_t tibUpper(const DetId &id) const { return tibRPhi(id); }
338  uint32_t tidUpper(const DetId &id) const { return tidRPhi(id); }
339  uint32_t tobUpper(const DetId &id) const { return tobRPhi(id); }
340  uint32_t tecUpper(const DetId &id) const { return tecRPhi(id); }
341 
342  //phase0 glued
343  uint32_t tibGlued(const DetId &id) const {
344  uint32_t testId = (id.rawId()>>tibVals_.sterStartBit_) & tibVals_.sterMask_;
345  return ( testId == 0 ) ? 0 : (id.rawId() - testId);
346  }
347 
348  uint32_t tecGlued(const DetId &id) const {
349  uint32_t testId = (id.rawId()>>tecVals_.sterStartBit_) & tecVals_.sterMask_;
350  return ( testId == 0 ) ? 0 : (id.rawId() - testId);
351  }
352 
353  uint32_t tobGlued(const DetId &id) const {
354  uint32_t testId = (id.rawId()>>tobVals_.sterStartBit_) & tobVals_.sterMask_;
355  return ( testId == 0 ) ? 0 : (id.rawId() - testId);
356  }
357 
358  uint32_t tidGlued(const DetId &id) const {
359  uint32_t testId = (id.rawId()>>tidVals_.sterStartBit_) & tidVals_.sterMask_;
360  return ( testId == 0 ) ? 0 : (id.rawId() - testId);
361  }
362 
363  //phase0 glued == phase2 stack
364  uint32_t tibStack(const DetId &id) const { return tibGlued(id); }
365  uint32_t tidStack(const DetId &id) const { return tidGlued(id); }
366  uint32_t tobStack(const DetId &id) const { return tobGlued(id); }
367  uint32_t tecStack(const DetId &id) const { return tecGlued(id); }
368 
369  //these should be used now!!
370  DetId partnerDetId(const DetId &id) const;
371 
372  DetId tibPartnerDetId(const DetId &id) const {
373  if ( ((id.rawId()>>tibVals_.sterStartBit_) & tibVals_.sterMask_ ) == 1 ) {
374  return DetId( id.rawId() + 1 );
375  } else if ( ((id.rawId()>>tibVals_.sterStartBit_) & tibVals_.sterMask_ ) == 2 ) {
376  return DetId( id.rawId() - 1 );
377  } else { return DetId(); }
378  }
379 
380  DetId tobPartnerDetId(const DetId &id) const {
381  if ( ((id.rawId()>>tobVals_.sterStartBit_) & tobVals_.sterMask_ ) == 1 ) {
382  return DetId( id.rawId() + 1 );
383  } else if ( ((id.rawId()>>tobVals_.sterStartBit_) & tobVals_.sterMask_ ) == 2 ) {
384  return DetId( id.rawId() - 1 );
385  } else { return DetId(); }
386  }
387 
388  DetId tidPartnerDetId(const DetId &id) const {
389  if ( ((id.rawId()>>tidVals_.sterStartBit_) & tidVals_.sterMask_ ) == 1 ) {
390  return DetId( id.rawId() + 1 );
391  } else if ( ((id.rawId()>>tidVals_.sterStartBit_) & tidVals_.sterMask_ ) == 2 ) {
392  return DetId( id.rawId() - 1 );
393  } else { return DetId(); }
394  }
395 
396  uint32_t tecPartnerDetId(const DetId &id) const {
397  if ( ((id.rawId()>>tecVals_.sterStartBit_) & tecVals_.sterMask_ ) == 1 ) {
398  return DetId( id.rawId() + 1 );
399  } else if ( ((id.rawId()>>tecVals_.sterStartBit_) & tecVals_.sterMask_ ) == 2 ) {
400  return DetId( id.rawId() - 1 );
401  } else { return DetId(); }
402  }
403 
404  //misc tec
405  std::vector<unsigned int> tecPetalInfo(const DetId &id) const {
406  std::vector<unsigned int> num;
407  num.push_back(tecOrder(id));
408  num.push_back(tecPetalNumber(id));
409  return num ;
410  }
411 
412  bool tecIsBackPetal(const DetId &id) const {
413  return (tecOrder(id)==1);
414  }
415 
416  bool tecIsFrontPetal(const DetId &id) const {return !tecIsBackPetal(id);}
417 
418  //misc tib
419  unsigned int tibString(const DetId &id) const {
420  return (id.rawId()>>tibVals_.strStartBit_)&tibVals_.strMask_;
421  }
422 
423  std::vector<unsigned int> tibStringInfo(const DetId &id) const
424  { std::vector<unsigned int> num;
425  num.push_back( tibSide(id) );
426  num.push_back( tibOrder(id) );
427  num.push_back(tibString(id));
428  return num ;
429  }
430 
431  bool tibIsInternalString(const DetId &id) const {
432  return (tibOrder(id)==1);
433  }
434 
435  bool tibIsExternalString(const DetId &id) const {
436  return !tibIsInternalString(id);
437  }
438 
439  //misc tid
440  std::vector<unsigned int> tidModuleInfo(const DetId &id) const {
441  std::vector<unsigned int> num;
442  num.push_back( tidOrder(id) );
443  num.push_back( tidModule(id) );
444  return num ;
445  }
446 
447  bool tidIsBackRing(const DetId &id) const {
448  return (tidOrder(id)==1);
449  }
450 
451  bool tidIsFrontRing(const DetId &id) const {return !tidIsBackRing(id);}
452 
453 
454  //misc pf
455  unsigned int pxfDisk(const DetId &id) const {
456  return int((id.rawId()>>pfVals_.diskStartBit_) & pfVals_.diskMask_);
457  }
458  unsigned int pxfBlade(const DetId &id) const {
459  return int((id.rawId()>>pfVals_.bladeStartBit_) & pfVals_.bladeMask_);
460  }
461  unsigned int pxfPanel(const DetId &id) const {
462  return int((id.rawId()>>pfVals_.panelStartBit_) & pfVals_.panelMask_);
463  }
464 
465  //old constructors, now return DetId
466  DetId pxbDetId(uint32_t layer,
467  uint32_t ladder,
468  uint32_t module) const {
469  //uply
471  uint32_t rawid=id.rawId();
472  rawid |= (layer& pbVals_.layerMask_) << pbVals_.layerStartBit_ |
475  return DetId(rawid);
476  }
477 
478  DetId pxfDetId(uint32_t side,
479  uint32_t disk,
480  uint32_t blade,
481  uint32_t panel,
482  uint32_t module) const {
484  uint32_t rawid=id.rawId();
485  rawid |= (side& pfVals_.sideMask_) << pfVals_.sideStartBit_ |
490  return DetId(rawid);
491  }
492 
493  DetId tecDetId(uint32_t side, uint32_t wheel,
494  uint32_t petal_fw_bw, uint32_t petal,
495  uint32_t ring, uint32_t module, uint32_t ster) const {
496 
498  uint32_t rawid=id.rawId();
499 
500  rawid |= (side& tecVals_.sideMask_) << tecVals_.sideStartBit_ |
507  return DetId(rawid);
508  }
509 
510  DetId tibDetId(uint32_t layer,
511  uint32_t str_fw_bw,
512  uint32_t str_int_ext,
513  uint32_t str,
514  uint32_t module,
515  uint32_t ster) const {
517  uint32_t rawid=id.rawId();
518  rawid |= (layer& tibVals_.layerMask_) << tibVals_.layerStartBit_ |
524  return DetId(rawid);
525  }
526 
527  DetId tidDetId(uint32_t side,
528  uint32_t wheel,
529  uint32_t ring,
530  uint32_t module_fw_bw,
531  uint32_t module,
532  uint32_t ster) const {
534  uint32_t rawid=id.rawId();
535  rawid |= (side& tidVals_.sideMask_) << tidVals_.sideStartBit_ |
541  return DetId(rawid);
542  }
543 
544  DetId tobDetId(uint32_t layer,
545  uint32_t rod_fw_bw,
546  uint32_t rod,
547  uint32_t module,
548  uint32_t ster) const {
550  uint32_t rawid=id.rawId();
551  rawid |= (layer& tobVals_.layerMask_) << tobVals_.layerStartBit_ |
556  return DetId(rawid);
557  }
558 
559  std::pair<DetId, SameLayerComparator> pxbDetIdLayerComparator(uint32_t layer) const {
560  return std::make_pair(pxbDetId(layer, 1,1), SameLayerComparator(this));
561  }
562 
563  std::pair<DetId, SameLayerComparator> pxfDetIdDiskComparator(uint32_t side, uint32_t disk) const {
564  return std::make_pair(pxfDetId(side, disk, 1,1,1), SameLayerComparator(this));
565  }
566 
567  std::pair<DetId, SameLayerComparator> tecDetIdWheelComparator(uint32_t side, uint32_t wheel) const {
568  return std::make_pair(tecDetId(side, wheel, 1,1,1,1,1), SameLayerComparator(this));
569  }
570 
571  std::pair<DetId, SameLayerComparator> tibDetIdLayerComparator(uint32_t layer) const {
572  return std::make_pair(tibDetId(layer, 1,1,1,1,1), SameLayerComparator(this));
573  }
574 
575  std::pair<DetId, SameLayerComparator> tidDetIdWheelComparator(uint32_t side, uint32_t wheel) const {
576  return std::make_pair(tidDetId(side, wheel, 1,1,1,1), SameLayerComparator(this));
577  }
578 
579  std::pair<DetId, SameLayerComparator> tobDetIdLayerComparator(uint32_t layer) const {
580  return std::make_pair(tobDetId(layer, 1,1,1,1), SameLayerComparator(this));
581  }
582 
583  std::string print(DetId detid) const;
584 
586 
587  int getOTLayerNumber(const DetId &id)const;
588  int getITPixelLayerNumber(const DetId &id)const;
589 
590  // Those is only implemented for Pixel right now, but can be extended to all
591  // subdetectors.
592 
593  // Extract the raw bit value for a given field type.
594  // E.g. getField(id, PBLadder) == pxbLadder(id)
595  unsigned int getField(const DetId &id, DetIdFields idx) const {
596  return ((id.rawId()>>bits_per_field[idx].startBit)&bits_per_field[idx].mask);
597  }
598  // checks whether a given field can be extracted from a given DetId.
599  // This boils down to checking whether it is the correct subdetector.
600  bool hasField(const DetId &id, DetIdFields idx) const {
601  return id.subdetId() == bits_per_field[idx].subdet;
602  }
603 
604  private:
605 
608 
613 
615  unsigned int startBit;
616  unsigned int mask;
617  int subdet;
618  };
620 
621 };
622 
623 #endif
624 
DetId tidPartnerDetId(const DetId &id) const
const TECValues tecVals_
bool hasField(const DetId &id, DetIdFields idx) const
uint32_t tibStack(const DetId &id) const
bool tecIsDoubleSide(const DetId &id) const
bool tobIsDoubleSide(const DetId &id) const
uint32_t tobGlued(const DetId &id) const
bool tibIsDoubleSide(const DetId &id) const
uint32_t upper(const DetId &id) const
unsigned int tibLayer(const DetId &id) const
unsigned int tibString(const DetId &id) const
unsigned int tidRing(const DetId &id) const
std::pair< DetId, SameLayerComparator > pxfDetIdDiskComparator(uint32_t side, uint32_t disk) const
bool tobIsStereo(const DetId &id) const
uint32_t tobLower(const DetId &id) const
const PixelEndcapValues pfVals_
std::vector< unsigned int > tidModuleInfo(const DetId &id) const
unsigned int pxfDisk(const DetId &id) const
unsigned int tecRing(const DetId &id) const
ring id
uint32_t tobStereo(const DetId &id) const
uint32_t tidRPhi(const DetId &id) const
unsigned int pxbLadder(const DetId &id) const
uint32_t tobStack(const DetId &id) const
unsigned int side(const DetId &id) const
uint32_t tecGlued(const DetId &id) const
bool isStereo(const DetId &id) const
bool tidIsFrontRing(const DetId &id) const
unsigned int tidWheel(const DetId &id) const
unsigned int pxbModule(const DetId &id) const
SiStripDetId::ModuleGeometry moduleGeometry(const DetId &id) const
const BitmaskAndSubdet bits_per_field[DETID_FIELDS_MAX]
bool operator()(DetId i1, DetId i2) const
uint32_t tecRPhi(const DetId &id) const
std::vector< unsigned int > tibStringInfo(const DetId &id) const
bool tobIsRPhi(const DetId &id) const
std::string print(DetId detid) const
DetId pxfDetId(uint32_t side, uint32_t disk, uint32_t blade, uint32_t panel, uint32_t module) const
std::pair< DetId, SameLayerComparator > tidDetIdWheelComparator(uint32_t side, uint32_t wheel) const
bool tecIsZMinusSide(const DetId &id) const
uint32_t tecPartnerDetId(const DetId &id) const
DetId partnerDetId(const DetId &id) const
bool tidIsStereo(const DetId &id) const
DetId tibPartnerDetId(const DetId &id) const
DetId tobPartnerDetId(const DetId &id) const
return((rh^lh)&mask)
bool tidIsZMinusSide(const DetId &id) const
const PixelBarrelValues pbVals_
bool isLower(const DetId &id) const
bool tibIsZPlusSide(const DetId &id) const
unsigned int module(const DetId &id) const
bool tecIsStereo(const DetId &id) const
uint32_t tibRPhi(const DetId &id) const
unsigned int tibSide(const DetId &id) const
bool tibIsExternalString(const DetId &id) const
std::vector< unsigned int > tecPetalInfo(const DetId &id) const
uint32_t tecUpper(const DetId &id) const
bool tibIsRPhi(const DetId &id) const
std::pair< DetId, SameLayerComparator > tobDetIdLayerComparator(uint32_t layer) const
unsigned int tidSide(const DetId &id) const
uint32_t tidStereo(const DetId &id) const
bool tibIsZMinusSide(const DetId &id) const
std::vector< unsigned int > tobRodInfo(const DetId &id) const
unsigned int tidModule(const DetId &id) const
bool tidIsBackRing(const DetId &id) const
std::pair< DetId, SameLayerComparator > tibDetIdLayerComparator(uint32_t layer) const
uint32_t tidStack(const DetId &id) const
bool tobIsZPlusSide(const DetId &id) const
DetId tobDetId(uint32_t layer, uint32_t rod_fw_bw, uint32_t rod, uint32_t module, uint32_t ster) const
unsigned int tobSide(const DetId &id) const
DetId tidDetId(uint32_t side, uint32_t wheel, uint32_t ring, uint32_t module_fw_bw, uint32_t module, uint32_t ster) const
SameLayerComparator(const TrackerTopology *topo)
bool tobIsZMinusSide(const DetId &id) const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
bool operator()(uint32_t i1, uint32_t i2) const
const TIBValues tibVals_
std::pair< DetId, SameLayerComparator > tecDetIdWheelComparator(uint32_t side, uint32_t wheel) const
bool tecIsRPhi(const DetId &id) const
int getITPixelLayerNumber(const DetId &id) const
unsigned int tibModule(const DetId &id) const
unsigned int pxfModule(const DetId &id) const
unsigned int pxbLayer(const DetId &id) const
bool isUpper(const DetId &id) const
unsigned int tecModule(const DetId &id) const
bool tecIsFrontPetal(const DetId &id) const
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
const TOBValues tobVals_
bool tecIsBackPetal(const DetId &id) const
Definition: DetId.h:18
bool tidIsRPhi(const DetId &id) const
uint32_t tibGlued(const DetId &id) const
bool tidIsZPlusSide(const DetId &id) const
unsigned int module_fw_bwStartBit_
uint32_t stack(const DetId &id) const
DetId tibDetId(uint32_t layer, uint32_t str_fw_bw, uint32_t str_int_ext, uint32_t str, uint32_t module, uint32_t ster) const
uint32_t tidLower(const DetId &id) const
bool tibIsStereo(const DetId &id) const
bool tidIsDoubleSide(const DetId &id) const
uint32_t tecLower(const DetId &id) const
unsigned int getField(const DetId &id, DetIdFields idx) const
unsigned int tecOrder(const DetId &id) const
unsigned int tobModule(const DetId &id) const
unsigned int layer(const DetId &id) const
const TIDValues tidVals_
bool tecIsZPlusSide(const DetId &id) const
uint32_t lower(const DetId &id) const
unsigned int tidOrder(const DetId &id) const
uint32_t tecStereo(const DetId &id) const
uint32_t tibUpper(const DetId &id) const
uint32_t tecStack(const DetId &id) const
unsigned int pxfSide(const DetId &id) const
uint32_t tibLower(const DetId &id) const
unsigned int tecPetalNumber(const DetId &id) const
uint32_t tobUpper(const DetId &id) const
DetId pxbDetId(uint32_t layer, uint32_t ladder, uint32_t module) const
bool isRPhi(const DetId &id) const
unsigned int tobRod(const DetId &id) const
uint32_t tibStereo(const DetId &id) const
#define str(s)
bool tibIsInternalString(const DetId &id) const
uint32_t glued(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
std::pair< DetId, SameLayerComparator > pxbDetIdLayerComparator(uint32_t layer) const
DetId tecDetId(uint32_t side, uint32_t wheel, uint32_t petal_fw_bw, uint32_t petal, uint32_t ring, uint32_t module, uint32_t ster) const
Definition: vlib.h:208
uint32_t tidUpper(const DetId &id) const
TrackerTopology(const PixelBarrelValues &pxb, const PixelEndcapValues &pxf, const TECValues &tecv, const TIBValues &tibv, const TIDValues &tidv, const TOBValues &tobv)
unsigned int pxfPanel(const DetId &id) const
unsigned int pxfBlade(const DetId &id) const
int getOTLayerNumber(const DetId &id) const
unsigned int tobLayer(const DetId &id) const
unsigned int tecSide(const DetId &id) const
unsigned int tibOrder(const DetId &id) const
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:39
uint32_t tobRPhi(const DetId &id) const
uint32_t tidGlued(const DetId &id) const