CMS 3D CMS Logo

MESetBinningUtils2.cc
Go to the documentation of this file.
2 
4 
6 
7 #include <algorithm>
8 
9 #include "TMath.h"
10 
11 namespace ecaldqm {
12  namespace binning {
13  int xlow_(int _iSM) {
14  switch (_iSM) {
15  case kEEm01:
16  case kEEp01:
17  return 20;
18  case kEEm02:
19  case kEEp02:
20  return 0;
21  case kEEm03:
22  case kEEp03:
23  return 0;
24  case kEEm04:
25  case kEEp04:
26  return 5;
27  case kEEm05:
28  case kEEp05:
29  return 35;
30  case kEEm06:
31  case kEEp06:
32  return 55;
33  case kEEm07:
34  case kEEp07:
35  return 60;
36  case kEEm08:
37  case kEEp08:
38  return 55;
39  case kEEm09:
40  case kEEp09:
41  return 50;
42  default:
43  break;
44  }
45 
46  if (_iSM >= kEBmLow && _iSM <= kEBpHigh)
47  return 0;
48 
49  return 0;
50  }
51 
52  int ylow_(int _iSM) {
53  switch (_iSM) {
54  case kEEm01:
55  case kEEp01:
56  case kEEm09:
57  case kEEp09:
58  return 60;
59  case kEEm02:
60  case kEEp02:
61  case kEEm08:
62  case kEEp08:
63  return 50;
64  case kEEm03:
65  case kEEp03:
66  case kEEm07:
67  case kEEp07:
68  return 25;
69  case kEEm04:
70  case kEEp04:
71  case kEEm06:
72  case kEEp06:
73  return 5;
74  case kEEm05:
75  case kEEp05:
76  return 0;
77  default:
78  break;
79  }
80 
81  if (_iSM >= kEBmLow && _iSM <= kEBmHigh)
82  return ((_iSM - kEBmLow) % 18) * 20;
83  if (_iSM >= kEBpLow && _iSM <= kEBpHigh)
84  return (-1 - ((_iSM - kEBpLow) % 18)) * 20;
85 
86  return 0;
87  }
88 
89  AxisSpecs getBinningEB_(BinningType _btype, bool _isMap, int _axis) {
91 
92  if (!_isMap) {
93  switch (_btype) {
94  case kTCC:
95  specs.nbins = 36;
96  specs.low = 9.;
97  specs.high = 45.;
98  specs.title = "iTCC";
99  break;
100  case kDCC:
101  specs.nbins = 36;
102  specs.low = 9.;
103  specs.high = 45.;
104  break;
105  case kProjEta:
106  specs.nbins = nEBEtaBins;
107  specs.low = -etaBound;
108  specs.high = etaBound;
109  specs.title = "eta";
110  break;
111  case kProjPhi:
112  specs.nbins = nPhiBins;
113  specs.low = -TMath::Pi() / 18.;
114  specs.high = TMath::Pi() * 35. / 18.;
115  specs.title = "phi";
116  break;
117  default:
118  break;
119  }
120  } else {
121  switch (_btype) {
122  case kCrystal:
123  if (_axis == 1)
124  specs.nbins = 360;
125  else if (_axis == 2)
126  specs.nbins = 170;
127  break;
128  case kSuperCrystal:
129  case kTriggerTower:
130  case kPseudoStrip:
131  if (_axis == 1)
132  specs.nbins = 72;
133  else if (_axis == 2)
134  specs.nbins = 34;
135  break;
136  default:
137  return specs;
138  }
139 
140  if (_axis == 1) {
141  specs.low = 0.;
142  specs.high = 360.;
143  specs.title = "iphi";
144  } else if (_axis == 2) {
145  specs.low = -85.;
146  specs.high = 85.;
147  specs.title = "ieta";
148  }
149  }
150 
151  return specs;
152  }
153 
154  AxisSpecs getBinningEE_(BinningType _btype, bool _isMap, int _zside, int _axis) {
156 
157  if (!_isMap) {
158  switch (_btype) {
159  case kTCC:
160  specs.nbins = _zside ? 36 : 72;
161  specs.low = 0.;
162  specs.high = _zside ? 36. : 72.;
163  specs.title = "iTCC";
164  break;
165  case kDCC:
166  specs.nbins = _zside ? 9 : 18;
167  specs.low = 0.;
168  specs.high = _zside ? 9. : 18.;
169  break;
170  case kProjEta:
171  if (_zside == 0) {
172  specs.nbins = nEEEtaBins / (3. - etaBound) * 6.;
173  specs.low = -3.;
174  specs.high = 3.;
175  } else {
176  specs.nbins = nEEEtaBins;
177  specs.low = _zside < 0 ? -3. : etaBound;
178  specs.high = _zside < 0 ? -etaBound : 3.;
179  }
180  specs.title = "eta";
181  break;
182  case kProjPhi:
183  specs.nbins = nPhiBins;
184  specs.low = -TMath::Pi() / 18.;
185  specs.high = TMath::Pi() * 35. / 18.;
186  specs.title = "phi";
187  break;
188  default:
189  break;
190  }
191  } else {
192  switch (_btype) {
193  case kCrystal:
194  case kTriggerTower:
195  case kPseudoStrip:
196  if (_axis == 1)
197  specs.nbins = _zside ? 100 : 200;
198  if (_axis == 2)
199  specs.nbins = 100;
200  break;
201  case kSuperCrystal:
202  if (_axis == 1)
203  specs.nbins = _zside ? 20 : 40;
204  if (_axis == 2)
205  specs.nbins = 20;
206  break;
207  default:
208  return specs;
209  }
210 
211  if (_axis == 1) {
212  specs.low = 0.;
213  specs.high = _zside ? 100. : 200.;
214  specs.title = "ix";
215  } else if (_axis == 2) {
216  specs.low = 0.;
217  specs.high = 100.;
218  specs.title = "iy";
219  }
220  }
221 
222  return specs;
223  }
224 
225  AxisSpecs getBinningSM_(BinningType _btype, bool _isMap, unsigned _iObj, int _axis) {
227 
228  unsigned iSM(_iObj);
229 
230  const bool isBarrel(iSM >= kEBmLow && iSM <= kEBpHigh);
231 
232  if (!_isMap) {
233  switch (_btype) {
234  case kCrystal:
235  specs.nbins = isBarrel ? 1700 : getElectronicsMap()->dccConstituents(iSM + 1).size();
236  specs.low = 0.;
237  specs.high = specs.nbins;
238  specs.title = "crystal";
239  break;
240  case kTriggerTower:
241  case kPseudoStrip:
242  specs.nbins = isBarrel ? 68 : (2 * nTTOuter + 2 * nTTInner); // For EE: numbering of bins
243  // is in the order (inner1, inner2, outer1, outer2). ("inner"" := closer
244  // to the beam)
245  specs.low = 1.;
246  specs.high = specs.nbins + specs.low;
247  specs.title = "tower";
248  break;
249  case kSuperCrystal:
250  specs.nbins = isBarrel ? 68 : nSuperCrystals(iSM + 1);
251  specs.low = 1.;
252  specs.high = specs.nbins + specs.low;
253  specs.title = "tower";
254  break;
255  default:
256  break;
257  }
258  } else {
259  int nEEX(nEESMX);
260  int nEEY(nEESMY);
261  if (iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08)
262  nEEX = nEESMXExt;
263  if (iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 || iSM == kEEp09)
264  nEEX = nEESMXRed;
265  if (iSM == kEEm03 || iSM == kEEm07 || iSM == kEEp03 || iSM == kEEp07)
266  nEEY = nEESMYRed;
267 
268  switch (_btype) {
269  case kCrystal:
270  if (_axis == 1)
271  specs.nbins = isBarrel ? nEBSMEta : nEEX;
272  else if (_axis == 2)
273  specs.nbins = isBarrel ? nEBSMPhi : nEEY;
274  break;
275  case kTriggerTower:
276  case kPseudoStrip:
277  if (_axis == 1)
278  specs.nbins = isBarrel ? nEBSMEta / 5 : nEEX;
279  else if (_axis == 2)
280  specs.nbins = isBarrel ? nEBSMPhi / 5 : nEEY;
281  break;
282  case kSuperCrystal:
283  if (_axis == 1)
284  specs.nbins = isBarrel ? nEBSMEta / 5 : nEEX / 5;
285  else if (_axis == 2)
286  specs.nbins = isBarrel ? nEBSMPhi / 5 : nEEY / 5;
287  break;
288  default:
289  return specs;
290  }
291 
292  if (_axis == 1) {
293  specs.low = xlow_(iSM);
294  specs.high = specs.low + (isBarrel ? nEBSMEta : nEEX);
295  specs.title = isBarrel ? (iSM < kEBpLow ? "-ieta" : "ieta") : "ix";
296  } else if (_axis == 2) {
297  specs.low = ylow_(iSM);
298  specs.high = specs.low + (isBarrel ? nEBSMPhi : nEEY);
299  specs.title = isBarrel ? "iphi" : "iy";
300  }
301  }
302 
303  return specs;
304  }
305 
306  AxisSpecs getBinningSMMEM_(BinningType _btype, bool _isMap, unsigned _iObj, int _axis) {
308 
309  unsigned iSM(memDCCId(_iObj) - 1);
310 
311  if (iSM == unsigned(-1) || _btype != kCrystal)
312  return specs;
313 
314  if (_axis == 1) {
315  specs.nbins = 10;
316  specs.low = 0.;
317  specs.high = 10.;
318  if (_isMap)
319  specs.title = "pseudo-strip";
320  else
321  specs.title = "iPN";
322  } else if (_axis == 2) {
323  specs.nbins = 1;
324  specs.low = 0.;
325  specs.high = 5.;
326  specs.title = "channel";
327  }
328 
329  return specs;
330  }
331 
332  AxisSpecs getBinningEcal_(BinningType _btype, bool _isMap, int _axis) {
334 
335  if (!_isMap) {
336  switch (_btype) {
337  case kTCC:
338  specs.nbins = 108;
339  specs.low = 0.;
340  specs.high = 108.;
341  specs.title = "iTCC";
342  break;
343  case kDCC:
344  specs.nbins = 54;
345  specs.low = 0.;
346  specs.high = 54.;
347  specs.title = "iDCC";
348  break;
349  case kProjEta:
350  specs.nbins = nEBEtaBins + 2 * nEEEtaBins;
351  specs.edges = new float[specs.nbins + 1];
352  for (int i(0); i <= nEEEtaBins; i++)
353  specs.edges[i] = -3. + (3. - etaBound) / nEEEtaBins * i;
354  for (int i(1); i <= nEBEtaBins; i++)
355  specs.edges[i + nEEEtaBins] = -etaBound + 2. * etaBound / nEBEtaBins * i;
356  for (int i(1); i <= nEEEtaBins; i++)
357  specs.edges[i + nEEEtaBins + nEBEtaBins] = etaBound + (3. - etaBound) / nEEEtaBins * i;
358  specs.title = "eta";
359  break;
360  case kProjPhi:
361  specs.nbins = nPhiBins;
362  specs.low = -TMath::Pi() / 18.;
363  specs.high = TMath::Pi() * 35. / 18.;
364  specs.title = "phi";
365  break;
366  default:
367  break;
368  }
369  } else {
370  switch (_btype) {
371  case kDCC:
372  if (_axis == 1) {
373  specs.nbins = 9;
374  specs.low = 0.;
375  specs.high = 9.;
376  } else if (_axis == 2) {
377  specs.nbins = 6;
378  specs.low = 0.;
379  specs.high = 6.;
380  }
381  break;
382  case kRCT:
383  if (_axis == 1) {
384  specs.nbins = 64;
385  specs.low = -32.;
386  specs.high = 32.;
387  specs.title = "RCT iEta";
388  } else if (_axis == 2) {
389  specs.nbins = 72;
390  specs.low = 0.;
391  specs.high = 72.;
392  specs.title = "RCT Phi";
393  }
394  break;
395  default:
396  break;
397  }
398  }
399 
400  return specs;
401  }
402 
403  AxisSpecs getBinningMEM_(BinningType _btype, bool _isMap, int _subdet, int _axis) {
405 
406  if (_btype != kCrystal)
407  return specs;
408 
409  int nbins(44);
410  if (_subdet == EcalBarrel)
411  nbins = 36;
412  else if (_subdet == EcalEndcap)
413  nbins = 8;
414 
415  if (_axis == 1) {
416  specs.nbins = nbins;
417  specs.low = 0.;
418  specs.high = nbins;
419  } else if (_axis == 2) {
420  specs.nbins = 10;
421  specs.low = 0.;
422  specs.high = 10.;
423  specs.title = "iPN";
424  }
425 
426  return specs;
427  }
428 
429  int findBinCrystal_(ObjectType _otype, const DetId &_id, int _iSM /* = -1*/) {
430  int xbin(0), ybin(0);
431  int nbinsX(0);
432  int subdet(_id.subdetId());
433 
434  if (subdet == EcalBarrel) {
435  EBDetId ebid(_id);
436  int iphi(ebid.iphi());
437  int ieta(ebid.ieta());
438  switch (_otype) {
439  case kEB:
440  xbin = iphi;
441  ybin = ieta < 0 ? ieta + 86 : ieta + 85;
442  nbinsX = 360;
443  break;
444  case kSM:
445  case kEBSM:
446  xbin = ieta < 0 ? -ieta : ieta;
447  ybin = ieta < 0 ? (iphi - 1) % 20 + 1 : 20 - (iphi - 1) % 20;
448  nbinsX = nEBSMEta;
449  break;
450  default:
451  break;
452  }
453  } else if (subdet == EcalEndcap) {
454  EEDetId eeid(_id);
455  int ix(eeid.ix());
456  int iy(eeid.iy());
457  switch (_otype) {
458  case kEE:
459  xbin = eeid.zside() < 0 ? ix : ix + 100;
460  ybin = iy;
461  nbinsX = 200;
462  break;
463  case kEEm:
464  case kEEp:
465  xbin = ix;
466  ybin = iy;
467  nbinsX = 100;
468  break;
469  case kSM:
470  case kEESM: {
471  int iSM(_iSM >= 0 ? _iSM : dccId(_id) - 1);
472  xbin = ix - xlow_(iSM);
473  ybin = iy - ylow_(iSM);
474  if (iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08)
475  nbinsX = nEESMXExt;
476  else if (iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 || iSM == kEEp09)
477  nbinsX = nEESMXRed;
478  else
479  nbinsX = nEESMX;
480  } break;
481  default:
482  break;
483  }
484  } else if (subdet == EcalLaserPnDiode) {
485  EcalPnDiodeDetId pnid(_id);
486  switch (_otype) {
487  case kSMMEM:
488  case kEBSMMEM:
489  case kEESMMEM:
490  xbin = pnid.iPnId();
491  ybin = 1;
492  nbinsX = 10;
493  break;
494  case kMEM:
495  xbin = memDCCIndex(dccId(_id)) + 1;
496  ybin = pnid.iPnId();
497  nbinsX = 44;
498  break;
499  case kEBMEM:
500  xbin = memDCCIndex(dccId(_id)) - 3;
501  ybin = pnid.iPnId();
502  nbinsX = 36;
503  break;
504  case kEEMEM:
505  xbin = memDCCIndex(dccId(_id)) + 1;
506  if (xbin > kEEmHigh + 1)
507  xbin -= 36;
508  ybin = pnid.iPnId();
509  nbinsX = 8;
510  break;
511  default:
512  break;
513  }
514  }
515 
516  return (nbinsX + 2) * ybin + xbin;
517  }
518 
520  return findBinCrystal_(_otype, getElectronicsMap()->getDetId(_id));
521  }
522 
523  int findBinRCT_(ObjectType _otype, DetId const &_id) {
524  int xbin(0);
525  int ybin(0);
526  int nbinsX(0);
527 
528  EcalTrigTowerDetId ttid(_id);
529  int ieta(ttid.ieta());
530  int iphi((ttid.iphi() + 1) % 72 + 1);
531 
532  xbin = ieta < 0 ? ieta + 33 : ieta + 32;
533  ybin = iphi;
534  nbinsX = 64;
535 
536  return (nbinsX + 2) * ybin + xbin;
537  }
538 
539  int findBinTriggerTower_(ObjectType _otype, DetId const &_id) {
540  int xbin(0);
541  int ybin(0);
542  int nbinsX(0);
543  int subdet(_id.subdetId());
544 
545  if ((subdet == EcalTriggerTower && !isEndcapTTId(_id)) || subdet == EcalBarrel) {
546  EcalTrigTowerDetId ttid;
547  if (subdet == EcalBarrel)
548  ttid = EBDetId(_id).tower();
549  else
550  ttid = _id;
551 
552  int ieta(ttid.ieta());
553  int iphi((ttid.iphi() + 1) % 72 + 1);
554  switch (_otype) {
555  case kEB:
556  xbin = iphi;
557  ybin = ieta < 0 ? ieta + 18 : ieta + 17;
558  nbinsX = 72;
559  break;
560  case kSM:
561  case kEBSM:
562  xbin = ieta < 0 ? -ieta : ieta;
563  ybin = ieta < 0 ? (iphi - 1) % 4 + 1 : 4 - (iphi - 1) % 4;
564  nbinsX = 17;
565  break;
566  case kEcal:
567  xbin = ieta < 0 ? ieta + 33 : ieta + 32;
568  ybin = iphi > 70 ? iphi - 70 : iphi + 2;
569  nbinsX = 64;
570  default:
571  break;
572  }
573  } else if (subdet == EcalEndcap) {
574  unsigned tccid(tccId(_id));
575  unsigned iSM(tccid <= 36 ? tccid % 18 / 2 : (tccid - 72) % 18 / 2);
576  return findBinCrystal_(_otype, _id, iSM);
577  }
578 
579  return (nbinsX + 2) * ybin + xbin;
580  }
581 
582  int findBinPseudoStrip_(ObjectType _otype, DetId const &_id) {
583  int xbin(0);
584  int ybin(0);
585  int nbinsX(0);
586  int subdet(_id.subdetId());
587 
588  if ((subdet == EcalTriggerTower && !isEndcapTTId(_id)) || subdet == EcalBarrel) {
589  return findBinTriggerTower_(_otype, _id);
590  } else if (subdet == EcalEndcap) {
591  unsigned tccid(tccId(_id));
592  unsigned iSM(tccid <= 36 ? tccid % 18 / 2 : (tccid - 72) % 18 / 2);
593  return findBinCrystal_(_otype, _id, iSM);
594  }
595 
596  return (nbinsX + 2) * ybin + xbin;
597  }
598 
599  int findBinSuperCrystal_(ObjectType _otype, const DetId &_id, int _iSM /* -1*/) {
600  int xbin(0);
601  int ybin(0);
602  int nbinsX(0);
603  int subdet(_id.subdetId());
604 
605  if (subdet == EcalBarrel) {
606  EBDetId ebid(_id);
607  int iphi(ebid.iphi());
608  int ieta(ebid.ieta());
609  switch (_otype) {
610  case kEB:
611  xbin = (iphi - 1) / 5 + 1;
612  ybin = (ieta < 0 ? ieta + 85 : ieta + 84) / 5 + 1;
613  nbinsX = 72;
614  break;
615  case kSM:
616  case kEBSM:
617  xbin = (ieta < 0 ? -ieta - 1 : ieta - 1) / 5 + 1;
618  ybin = (ieta < 0 ? (iphi - 1) % 20 : 19 - (iphi - 1) % 20) / 5 + 1;
619  nbinsX = nEBSMEta / 5;
620  break;
621  default:
622  break;
623  }
624  } else if (subdet == EcalEndcap) {
625  if (isEcalScDetId(_id)) {
626  EcalScDetId scid(_id);
627  int ix(scid.ix());
628  int iy(scid.iy());
629  switch (_otype) {
630  case kEE: {
631  int zside(scid.zside());
632  xbin = zside < 0 ? ix : ix + 20;
633  ybin = iy;
634  nbinsX = 40;
635  } break;
636  case kEEm:
637  case kEEp:
638  xbin = ix;
639  ybin = iy;
640  nbinsX = 20;
641  break;
642  case kSM:
643  case kEESM: {
644  int iSM(_iSM >= 0 ? _iSM : dccId(_id) - 1);
645  xbin = ix - xlow_(iSM) / 5;
646  ybin = iy - ylow_(iSM) / 5;
647  if (iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08)
648  nbinsX = nEESMXExt / 5;
649  else if (iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 ||
650  iSM == kEEp09)
651  nbinsX = nEESMXRed / 5;
652  else
653  nbinsX = nEESMX / 5;
654  } break;
655  default:
656  break;
657  }
658  } else {
659  EEDetId eeid(_id);
660  int ix(eeid.ix());
661  int iy(eeid.iy());
662  switch (_otype) {
663  case kEE:
664  xbin = (eeid.zside() < 0 ? ix - 1 : ix + 99) / 5 + 1;
665  ybin = (iy - 1) / 5 + 1;
666  nbinsX = 40;
667  break;
668  case kEEm:
669  case kEEp:
670  xbin = (ix - 1) / 5 + 1;
671  ybin = (iy - 1) / 5 + 1;
672  nbinsX = 20;
673  break;
674  case kSM:
675  case kEESM: {
676  int iSM(_iSM >= 0 ? _iSM : dccId(_id) - 1);
677  xbin = (ix - xlow_(iSM) - 1) / 5 + 1;
678  ybin = (iy - ylow_(iSM) - 1) / 5 + 1;
679  if (iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08)
680  nbinsX = nEESMXExt / 5;
681  else if (iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 ||
682  iSM == kEEp09)
683  nbinsX = nEESMXRed / 5;
684  else
685  nbinsX = nEESMX / 5;
686  } break;
687  default:
688  break;
689  }
690  }
691  } else if (subdet == EcalTriggerTower && !isEndcapTTId(_id)) {
692  EcalTrigTowerDetId ttid(_id);
693  int ieta(ttid.ieta());
694  int iphi((ttid.iphi() + 1) % 72 + 1);
695  switch (_otype) {
696  case kEB:
697  xbin = iphi;
698  ybin = ieta < 0 ? ieta + 18 : ieta + 17;
699  nbinsX = 72;
700  break;
701  case kSM:
702  case kEBSM:
703  xbin = ieta < 0 ? -ieta : ieta;
704  ybin = ieta < 0 ? (iphi - 1) % 4 + 1 : 4 - (iphi - 1) % 4;
705  nbinsX = nEBSMEta / 5;
706  break;
707  default:
708  break;
709  }
710  }
711 
712  return (nbinsX + 2) * ybin + xbin;
713  }
714 
716  int xbin(0);
717  int ybin(0);
718  int nbinsX(0);
719  int iDCC(_id.dccId() - 1);
720 
721  if (iDCC >= kEBmLow && iDCC <= kEBpHigh) {
722  unsigned towerid(_id.towerId());
723  bool isEBm(iDCC <= kEBmHigh);
724  switch (_otype) {
725  case kEB:
726  xbin = 4 * ((iDCC - 9) % 18) + (isEBm ? towerid - 1 : 68 - towerid) % 4 + 1;
727  ybin = (towerid - 1) / 4 * (isEBm ? -1 : 1) + (isEBm ? 18 : 17);
728  nbinsX = 72;
729  break;
730  case kSM:
731  case kEBSM:
732  xbin = (towerid - 1) / 4 + 1;
733  ybin = (isEBm ? towerid - 1 : 68 - towerid) % 4 + 1;
734  nbinsX = 17;
735  break;
736  default:
737  break;
738  }
739  } else {
740  return findBinSuperCrystal_(_otype, EEDetId(getElectronicsMap()->getDetId(_id)).sc());
741  }
742 
743  return (nbinsX + 2) * ybin + xbin;
744  }
745  } // namespace binning
746 } // namespace ecaldqm
const double Pi
int findBinCrystal_(ObjectType, DetId const &, int=-1)
unsigned memDCCIndex(unsigned)
int findBinRCT_(ObjectType, DetId const &)
int findBinTriggerTower_(ObjectType, DetId const &)
int ix() const
Definition: EEDetId.h:77
std::vector< DetId > dccConstituents(int dccId) const
Get the constituent detids for this dccId.
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
double const etaBound
bool isBarrel(GeomDetEnumerators::SubDetector m)
EcalElectronicsMapping const * getElectronicsMap()
unsigned tccId(DetId const &)
int towerId() const
get the tower id
int zside(DetId const &)
unsigned nSuperCrystals(unsigned)
int ieta() const
get the tower ieta
int iphi() const
get the crystal iphi
Definition: EBDetId.h:51
bool isEndcapTTId(DetId const &)
int iPnId() const
get the PnId
int findBinSuperCrystal_(ObjectType, DetId const &, int=-1)
int ix() const
Definition: EcalScDetId.h:70
AxisSpecs getBinningSMMEM_(BinningType, bool, unsigned, int)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
int zside() const
Definition: EEDetId.h:71
AxisSpecs getBinningEB_(BinningType, bool, int)
int iy() const
Definition: EEDetId.h:83
EcalTrigTowerDetId tower() const
get the HCAL/trigger iphi of this crystal
Definition: EBDetId.h:57
int ieta() const
get the crystal ieta
Definition: EBDetId.h:49
AxisSpecs getBinningSM_(BinningType, bool, unsigned, int)
int dccId() const
get the DCC (Ecal Local DCC value not global one) id
int iy() const
Definition: EcalScDetId.h:76
bool isEcalScDetId(DetId const &)
unsigned memDCCId(unsigned)
Definition: DetId.h:18
int iphi() const
get the tower iphi
int zside() const
Definition: EcalScDetId.h:64
AxisSpecs getBinningEE_(BinningType, bool, int, int)
int findBinPseudoStrip_(ObjectType, DetId const &)
AxisSpecs getBinningMEM_(BinningType, bool, int, int)
unsigned dccId(DetId const &)
AxisSpecs getBinningEcal_(BinningType, bool, int)