CMS 3D CMS Logo

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