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