CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RoadSearchDetIdHelper.cc
Go to the documentation of this file.
1 //
2 // Package: TrackingTools/RoadSearchDetIdHelper
3 // Class: RoadSearchDetIdHelper
4 //
5 // Description: helper functions concerning DetIds
6 //
7 // Original Author: Oliver Gutsche, gutsche@fnal.gov
8 // Created: Sun Jan 28 19:06:20 UTC 2007
9 //
10 // $Author: gutsche $
11 // $Date: 2007/02/16 00:48:21 $
12 // $Revision: 1.2 $
13 //
14 
16 
17 #include <sstream>
18 
20 }
21 
23 }
24 
25 std::string RoadSearchDetIdHelper::Print(const DetId id) {
26  //
27  // print DetId composition according to the type
28  //
29 
30  std::ostringstream output;
31 
32  if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
33  TIBDetId tibid(id.rawId());
34  output << "TIB ring Detid: " << id.rawId()
35  << " layer: " << tibid.layer()
36  << " fw(0)/bw(1): " << tibid.string()[0]
37  << " int(0)/ext(1): " << tibid.string()[1]
38  << " string: " << tibid.string()[2]
39  << " module: " << tibid.module();
40  if ( IsMatched(tibid) ) {
41  output << " corresponding to matched detunit of glued sensor";
42  } else if ( IsGluedRPhi(tibid) ) {
43  output << " corresponding to rphi detunit of glued sensor";
44  } else if ( IsStereo(tibid) ) {
45  output << " corresponding to stereo detunit of glued sensor";
46  } else if ( IsSingleRPhi(tibid) ) {
47  output << " corresponding to rphi detunit of single sensor";
48  }
49  output << std::endl;
50  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
51  TOBDetId tobid(id.rawId());
52  output << "TOB ring Detid: " << id.rawId()
53  << " layer: " << tobid.layer()
54  << " fw(0)/bw(1): " << tobid.rod()[0]
55  << " rod: " << tobid.rod()[1]
56  << " detector: " << tobid.module();
57  if ( IsMatched(tobid) ) {
58  output << " corresponding to matched detunit of glued sensor";
59  } else if ( IsGluedRPhi(tobid) ) {
60  output << " corresponding to rphi detunit of glued sensor";
61  } else if ( IsStereo(tobid) ) {
62  output << " corresponding to stereo detunit of glued sensor";
63  } else if ( IsSingleRPhi(tobid) ) {
64  output << " corresponding to rphi detunit of single sensor";
65  }
66  output << std::endl;
67  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
68  TIDDetId tidid(id.rawId());
69  output << "TID ring Detid: " << id.rawId()
70  << " side neg(1)/pos(2): " << tidid.side()
71  << " wheel: " << tidid.wheel()
72  << " ring: " << tidid.ring()
73  << " detector fw(0)/bw(1): " << tidid.module()[0]
74  << " detector: " << tidid.module()[1];
75  if ( IsMatched(tidid) ) {
76  output << " corresponding to matched detunit of glued sensor";
77  } else if ( IsGluedRPhi(tidid) ) {
78  output << " corresponding to rphi detunit of glued sensor";
79  } else if ( IsStereo(tidid) ) {
80  output << " corresponding to stereo detunit of glued sensor";
81  } else if ( IsSingleRPhi(tidid) ) {
82  output << " corresponding to rphi detunit of single sensor";
83  }
84  output << std::endl;
85  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
86  TECDetId tecid(id.rawId());
87  output << "TEC ring DetId: " << id.rawId()
88  << " side neg(1)/pos(2): " << tecid.side()
89  << " wheel: " << tecid.wheel()
90  << " petal fw(0)/bw(1): " << tecid.petal()[0]
91  << " petal: " << tecid.petal()[1]
92  << " ring: " << tecid.ring()
93  << " module: " << tecid.module();
94  if ( IsMatched(tecid) ) {
95  output << " corresponding to matched detunit of glued sensor";
96  } else if ( IsGluedRPhi(tecid) ) {
97  output << " corresponding to rphi detunit of glued sensor";
98  } else if ( IsStereo(tecid) ) {
99  output << " corresponding to stereo detunit of glued sensor";
100  } else if ( IsSingleRPhi(tecid) ) {
101  output << " corresponding to rphi detunit of single sensor";
102  }
103  output << std::endl;
104  } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelBarrel ) {
105  PXBDetId pxbid(id.rawId());
106  output << "PXB ring DetId: " << id.rawId()
107  << " layer: " << pxbid.layer()
108  << " ladder: " << pxbid.ladder()
109  << " detector: " << pxbid.module()
110  << std::endl;
111  } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelEndcap ) {
112  PXFDetId pxfid(id.rawId());
113  output << "PXF ring DetId: " << id.rawId()
114  << " side: " << pxfid.side()
115  << " disk: " << pxfid.disk()
116  << " blade: " << pxfid.blade()
117  << " detector: " << pxfid.module()
118  << std::endl;
119  }
120 
121 
122  return output.str();
123 }
124 
126 
127  // return value
128  bool result = false;
129 
130  if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
131  TIBDetId tibid(id.rawId());
132  if ( !tibid.glued() ) {
133  if ( tibid.layer() == 1 ||
134  tibid.layer() == 2 ) {
135  result = true;
136  }
137  }
138  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
139  TOBDetId tobid(id.rawId());
140  if ( !tobid.glued() ) {
141  if ( tobid.layer() == 1 ||
142  tobid.layer() == 2 ) {
143  result = true;
144  }
145  }
146  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
147  TIDDetId tidid(id.rawId());
148  if ( !tidid.glued() ) {
149  if ( tidid.ring() == 1 ||
150  tidid.ring() == 2 ) {
151  result = true;
152  }
153  }
154  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
155  TECDetId tecid(id.rawId());
156  if ( !tecid.glued() ) {
157  if ( tecid.ring() == 1 ||
158  tecid.ring() == 2 ||
159  tecid.ring() == 5 ) {
160  result = true;
161  }
162  }
163  }
164 
165  return result;
166 }
167 
169 
170  // return value
171  bool result = true;
172 
173  if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
174  TIBDetId tibid(id.rawId());
175  if ( !tibid.glued() ) {
176  if ( tibid.layer() == 1 ||
177  tibid.layer() == 2 ) {
178  result = false;
179  }
180  } else {
181  result = false;
182  }
183  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
184  TOBDetId tobid(id.rawId());
185  if ( !tobid.glued() ) {
186  if ( tobid.layer() == 1 ||
187  tobid.layer() == 2 ) {
188  result = false;
189  }
190  } else {
191  if ( (tobid.rawId()-2) != tobid.glued() ) {
192  result = false;
193  }
194  }
195  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
196  TIDDetId tidid(id.rawId());
197  if ( !tidid.glued() ) {
198  if ( tidid.ring() == 1 ||
199  tidid.ring() == 2 ) {
200  result = false;
201  }
202  } else {
203  if ( (tidid.rawId()-2) != tidid.glued() ) {
204  result = false;
205  }
206  }
207  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
208  TECDetId tecid(id.rawId());
209  if ( !tecid.glued() ) {
210  if ( tecid.ring() == 1 ||
211  tecid.ring() == 2 ||
212  tecid.ring() == 5 ) {
213  result = false;
214  }
215  } else {
216  if ( (tecid.rawId()-2) != tecid.glued() ) {
217  result = false;
218  }
219  }
220  }
221 
222  return result;
223 }
224 
226 
227  // return value
228  bool result = true;
229 
230  if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
231  TIBDetId tibid(id.rawId());
232  if ( !tibid.glued() ) {
233  result = false;
234  } else {
235  if ( (tibid.rawId()-2) != tibid.glued() ) {
236  result = false;
237  }
238  }
239  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
240  TOBDetId tobid(id.rawId());
241  if ( !tobid.glued() ) {
242  result = false;
243  } else {
244  if ( (tobid.rawId()-2) != tobid.glued() ) {
245  result = false;
246  }
247  }
248  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
249  TIDDetId tidid(id.rawId());
250  if ( !tidid.glued() ) {
251  result = false;
252  } else {
253  if ( (tidid.rawId()-2) != tidid.glued() ) {
254  result = false;
255  }
256  }
257  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
258  TECDetId tecid(id.rawId());
259  if ( !tecid.glued() ) {
260  result = false;
261  } else {
262  if ( (tecid.rawId()-2) != tecid.glued() ) {
263  result = false;
264  }
265  }
266  } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelBarrel ) {
267  result = false;
268  } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelEndcap ) {
269  result = false;
270  }
271 
272  return result;
273 }
274 
276 
277  // return value
278  bool result = true;
279 
280  if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
281  TIBDetId tibid(id.rawId());
282  if ( !tibid.glued() ) {
283  result = false;
284  } else {
285  if ( (tibid.rawId()-1) != tibid.glued() ) {
286  result = false;
287  }
288  }
289  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
290  TOBDetId tobid(id.rawId());
291  if ( !tobid.glued() ) {
292  result = false;
293  } else {
294  if ( (tobid.rawId()-1) != tobid.glued() ) {
295  result = false;
296  }
297  }
298  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
299  TIDDetId tidid(id.rawId());
300  if ( !tidid.glued() ) {
301  result = false;
302  } else {
303  if ( (tidid.rawId()-1) != tidid.glued() ) {
304  result = false;
305  }
306  }
307  } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
308  TECDetId tecid(id.rawId());
309  if ( !tecid.glued() ) {
310  result = false;
311  } else {
312  if ( (tecid.rawId()-1) != tecid.glued() ) {
313  result = false;
314  }
315  }
316  } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelBarrel ) {
317  result = false;
318  } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelEndcap ) {
319  result = false;
320  }
321 
322  return result;
323 }
324 
326  //
327  // return corresponding rphi id
328  //
329 
330  if ( IsMatched(id) ) {
331  return DetId(id.rawId()+2);
332  } else if ( IsStereo(id) ) {
333  return DetId(id.rawId()+1);
334  } else {
335  return id;
336  }
337 
338  return id;
339 }
340 
341 
343  //
344  // check whether two detids are on the same layer
345  //
346 
347  // return value
348  bool result = false;
349 
350  // check if both rings belong to same subdetector
351  if ( (unsigned int)id1.subdetId() == StripSubdetector::TIB &&
352  (unsigned int)id2.subdetId() == StripSubdetector::TIB ) {
353  // make TIBDetId instance
354  TIBDetId id1TIB(id1.rawId());
355  TIBDetId id2TIB(id2.rawId());
356  // check whether both rings are on the same TIB layer
357  if ( id1TIB.layer() == id2TIB.layer() ) {
358  result = true;
359  }
360  } else if ( (unsigned int)id1.subdetId() == StripSubdetector::TOB &&
361  (unsigned int)id2.subdetId() == StripSubdetector::TOB ) {
362  // make TOBDetId instance
363  TOBDetId id1TOB(id1.rawId());
364  TOBDetId id2TOB(id2.rawId());
365  // check whether both rings are on the same TOB layer
366  if ( id1TOB.layer() == id2TOB.layer() ) {
367  result = true;
368  }
369  } else if ( (unsigned int)id1.subdetId() == StripSubdetector::TID &&
370  (unsigned int)id2.subdetId() == StripSubdetector::TID) {
371  // make TIDDetId instance
372  TIDDetId id1TID(id1.rawId());
373  TIDDetId id2TID(id2.rawId());
374  // check whether both rings are on the same TID wheel
375  if ( id1TID.wheel() == id2TID.wheel() ) {
376  result = true;
377  }
378  } else if ( (unsigned int)id1.subdetId() == StripSubdetector::TEC &&
379  (unsigned int)id2.subdetId() == StripSubdetector::TEC ) {
380  // make TECDetId instance
381  TECDetId id1TEC(id1.rawId());
382  TECDetId id2TEC(id2.rawId());
383  // check whether both rings are on the same TEC wheel
384  if ( id1TEC.wheel() == id2TEC.wheel() ) {
385  result = true;
386  }
387  } else if ( (unsigned int)id1.subdetId() == PixelSubdetector::PixelBarrel &&
388  (unsigned int)id2.subdetId() == PixelSubdetector::PixelBarrel) {
389  // make PXBDetId instance
390  PXBDetId id1PXB(id1.rawId());
391  PXBDetId id2PXB(id2.rawId());
392  // check whether both rings are on the same PXB layer
393  if ( id1PXB.layer() == id2PXB.layer() ) {
394  result = true;
395  }
396  } else if ( (unsigned int)id1.subdetId() == PixelSubdetector::PixelEndcap &&
397  (unsigned int)id2.subdetId() == PixelSubdetector::PixelEndcap) {
398  // make PXFDetId instance
399  PXFDetId id1PXF(id1.rawId());
400  PXFDetId id2PXF(id2.rawId());
401  // check whether both rings are on the same PXF disk
402  if ( id1PXF.disk() == id2PXF.disk() ) {
403  result = true;
404  }
405  }
406 
407  return result;
408 }
unsigned int layer() const
layer id
Definition: TOBDetId.h:39
static DetId ReturnRPhiId(const DetId id)
unsigned int ladder() const
ladder id
Definition: PXBDetId.h:39
std::vector< unsigned int > string() const
string id
Definition: TIBDetId.h:53
unsigned int module() const
det id
Definition: TECDetId.h:75
unsigned int layer() const
layer id
Definition: PXBDetId.h:35
unsigned int side() const
positive or negative id
Definition: TECDetId.h:47
std::vector< unsigned int > rod() const
rod id
Definition: TOBDetId.h:49
unsigned int blade() const
blade id
Definition: PXFDetId.h:48
static bool IsGluedRPhi(const DetId id)
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
std::vector< unsigned int > petal() const
petal id
Definition: TECDetId.h:61
tuple result
Definition: query.py:137
unsigned int ring() const
ring id
Definition: TIDDetId.h:55
static bool IsSingleRPhi(const DetId id)
unsigned int module() const
det id
Definition: PXBDetId.h:43
static bool detIdsOnSameLayer(DetId id1, DetId id2)
unsigned int module() const
det id
Definition: PXFDetId.h:56
std::vector< unsigned int > module() const
det id
Definition: TIDDetId.h:64
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
unsigned int disk() const
disk id
Definition: PXFDetId.h:43
Definition: DetId.h:20
uint32_t glued() const
Definition: SiStripDetId.h:154
unsigned int module() const
detector id
Definition: TIBDetId.h:61
unsigned int side() const
positive or negative id
Definition: TIDDetId.h:45
unsigned int wheel() const
wheel id
Definition: TECDetId.h:52
unsigned int layer() const
layer id
Definition: TIBDetId.h:41
unsigned int ring() const
ring id
Definition: TECDetId.h:71
unsigned int side() const
positive or negative id
Definition: PXFDetId.h:38
unsigned int module() const
detector id
Definition: TOBDetId.h:58
static bool IsMatched(const DetId id)
static std::string Print(const DetId id)
static bool IsStereo(const DetId id)
unsigned int wheel() const
wheel id
Definition: TIDDetId.h:50