CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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  {
57  AxisSpecs specs;
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  {
126  AxisSpecs specs;
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  {
201  AxisSpecs specs;
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 : 88; // 88 bins required for EE: 28 for two inner tccs, 16 for two outer TCCs
218  specs.low = 0.;
219  specs.high = specs.nbins;
220  specs.title = "tower";
221  break;
222  case kSuperCrystal:
223  specs.nbins = isBarrel ? 68 : nSuperCrystals(iSM + 1);
224  specs.low = 0.;
225  specs.high = specs.nbins;
226  specs.title = "tower";
227  break;
228  default:
229  break;
230  }
231  }else{
232  int nEEX(nEESMX);
233  int nEEY(nEESMY);
234  if(iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08) nEEX = nEESMXExt;
235  if(iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 || iSM == kEEp09) nEEX = nEESMXRed;
236  if(iSM == kEEm03 || iSM == kEEm07 || iSM == kEEp03 || iSM == kEEp07) nEEY = nEESMYRed;
237 
238  switch(_btype){
239  case kCrystal:
240  if(_axis == 1)
241  specs.nbins = isBarrel ? nEBSMEta : nEEX;
242  else if(_axis == 2)
243  specs.nbins = isBarrel ? nEBSMPhi : nEEY;
244  break;
245  case kTriggerTower:
246  case kPseudoStrip:
247  if(_axis == 1)
248  specs.nbins = isBarrel ? nEBSMEta / 5 : nEEX;
249  else if(_axis == 2)
250  specs.nbins = isBarrel ? nEBSMPhi / 5 : nEEY;
251  break;
252  case kSuperCrystal:
253  if(_axis == 1)
254  specs.nbins = isBarrel ? nEBSMEta / 5 : nEEX / 5;
255  else if(_axis == 2)
256  specs.nbins = isBarrel ? nEBSMPhi / 5 : nEEY / 5;
257  break;
258  default:
259  return specs;
260  }
261 
262  if(_axis == 1){
263  specs.low = xlow_(iSM);
264  specs.high = specs.low + (isBarrel ? nEBSMEta : nEEX);
265  specs.title = isBarrel ? (iSM < kEBpLow ? "-ieta" : "ieta") : "ix";
266  }
267  else if(_axis == 2){
268  specs.low = ylow_(iSM);
269  specs.high = specs.low + (isBarrel ? nEBSMPhi : nEEY);
270  specs.title = isBarrel ? "iphi" : "iy";
271  }
272  }
273 
274  return specs;
275  }
276 
277  AxisSpecs
278  getBinningSMMEM_(BinningType _btype, bool _isMap, unsigned _iObj, int _axis)
279  {
280  AxisSpecs specs;
281 
282  unsigned iSM(memDCCId(_iObj) - 1);
283 
284  if(iSM == unsigned(-1) || _btype != kCrystal) return specs;
285 
286  if(_axis == 1){
287  specs.nbins = 10;
288  specs.low = 0.;
289  specs.high = 10.;
290  if(_isMap) specs.title = "pseudo-strip";
291  else specs.title = "iPN";
292  }
293  else if(_axis == 2){
294  specs.nbins = 1;
295  specs.low = 0.;
296  specs.high = 5.;
297  specs.title = "channel";
298  }
299 
300  return specs;
301  }
302 
303  AxisSpecs
304  getBinningEcal_(BinningType _btype, bool _isMap, int _axis)
305  {
306  AxisSpecs specs;
307 
308  if(!_isMap){
309  switch(_btype){
310  case kTCC:
311  specs.nbins = 108;
312  specs.low = 0.;
313  specs.high = 108.;
314  specs.title = "iTCC";
315  break;
316  case kDCC:
317  specs.nbins = 54;
318  specs.low = 0.;
319  specs.high = 54.;
320  specs.title = "iDCC";
321  break;
322  case kProjEta:
323  specs.nbins = nEBEtaBins + 2 * nEEEtaBins;
324  specs.edges = new float[specs.nbins + 1];
325  for(int i(0); i <= nEEEtaBins; i++)
326  specs.edges[i] = -3. + (3. - etaBound) / nEEEtaBins * i;
327  for(int i(1); i <= nEBEtaBins; i++)
328  specs.edges[i + nEEEtaBins] = -etaBound + 2. * etaBound / nEBEtaBins * i;
329  for(int i(1); i <= nEEEtaBins; i++)
330  specs.edges[i + nEEEtaBins + nEBEtaBins] = etaBound + (3. - etaBound) / nEEEtaBins * i;
331  specs.title = "eta";
332  break;
333  case kProjPhi:
334  specs.nbins = nPhiBins;
335  specs.low = -TMath::Pi() / 18.;
336  specs.high = TMath::Pi() * 35./18.;
337  specs.title = "phi";
338  break;
339  default:
340  break;
341  }
342  }
343  else{
344  switch(_btype){
345  case kDCC:
346  if(_axis == 1){
347  specs.nbins = 9;
348  specs.low = 0.;
349  specs.high = 9.;
350  }
351  else if(_axis == 2){
352  specs.nbins = 6;
353  specs.low = 0.;
354  specs.high = 6.;
355  }
356  break;
357  case kRCT:
358  if(_axis == 1){
359  specs.nbins = 64;
360  specs.low = -32.;
361  specs.high = 32.;
362  specs.title = "RCT iEta";
363  }
364  else if(_axis == 2){
365  specs.nbins = 72;
366  specs.low = 0.;
367  specs.high = 72.;
368  specs.title = "RCT Phi";
369  }
370  break;
371  default:
372  break;
373  }
374  }
375 
376  return specs;
377  }
378 
379  AxisSpecs
380  getBinningMEM_(BinningType _btype, bool _isMap, int _subdet, int _axis)
381  {
382  AxisSpecs specs;
383 
384  if(_btype != kCrystal) return specs;
385 
386  int nbins(44);
387  if(_subdet == EcalBarrel) nbins = 36;
388  else if(_subdet == EcalEndcap) nbins = 8;
389 
390  if(_axis == 1){
391  specs.nbins = nbins;
392  specs.low = 0.;
393  specs.high = nbins;
394  }
395  else if(_axis == 2){
396  specs.nbins = 10;
397  specs.low = 0.;
398  specs.high = 10.;
399  specs.title = "iPN";
400  }
401 
402  return specs;
403  }
404 
405  int
406  findBinCrystal_(ObjectType _otype, const DetId& _id, int _iSM/* = -1*/)
407  {
408  int xbin(0), ybin(0);
409  int nbinsX(0);
410  int subdet(_id.subdetId());
411 
412  if(subdet == EcalBarrel){
413  EBDetId ebid(_id);
414  int iphi(ebid.iphi());
415  int ieta(ebid.ieta());
416  switch(_otype){
417  case kEB:
418  xbin = iphi;
419  ybin = ieta < 0 ? ieta + 86 : ieta + 85;
420  nbinsX = 360;
421  break;
422  case kSM:
423  case kEBSM:
424  xbin = ieta < 0 ? -ieta : ieta;
425  ybin = ieta < 0 ? (iphi - 1) % 20 + 1 : 20 - (iphi - 1) % 20;
426  nbinsX = nEBSMEta;
427  break;
428  default:
429  break;
430  }
431  }
432  else if(subdet == EcalEndcap){
433  EEDetId eeid(_id);
434  int ix(eeid.ix());
435  int iy(eeid.iy());
436  switch(_otype){
437  case kEE:
438  xbin = eeid.zside() < 0 ? ix : ix + 100;
439  ybin = iy;
440  nbinsX = 200;
441  break;
442  case kEEm:
443  case kEEp:
444  xbin = ix;
445  ybin = iy;
446  nbinsX = 100;
447  break;
448  case kSM:
449  case kEESM:
450  {
451  int iSM(_iSM >= 0 ? _iSM : dccId(_id) - 1);
452  xbin = ix - xlow_(iSM);
453  ybin = iy - ylow_(iSM);
454  if(iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08)
455  nbinsX = nEESMXExt;
456  else if(iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 || iSM == kEEp09)
457  nbinsX = nEESMXRed;
458  else
459  nbinsX = nEESMX;
460  }
461  break;
462  default:
463  break;
464  }
465  }
466  else if(subdet == EcalLaserPnDiode){
467  EcalPnDiodeDetId pnid(_id);
468  switch(_otype){
469  case kSMMEM:
470  case kEBSMMEM:
471  case kEESMMEM:
472  xbin = pnid.iPnId();
473  ybin = 1;
474  nbinsX = 10;
475  break;
476  case kMEM:
477  xbin = memDCCIndex(dccId(_id)) + 1;
478  ybin = pnid.iPnId();
479  nbinsX = 44;
480  break;
481  case kEBMEM:
482  xbin = memDCCIndex(dccId(_id)) - 3;
483  ybin = pnid.iPnId();
484  nbinsX = 36;
485  break;
486  case kEEMEM:
487  xbin = memDCCIndex(dccId(_id)) + 1;
488  if(xbin > kEEmHigh + 1) xbin -= 36;
489  ybin = pnid.iPnId();
490  nbinsX = 8;
491  break;
492  default:
493  break;
494  }
495  }
496 
497  return (nbinsX + 2) * ybin + xbin;
498  }
499 
500  int
502  {
503  return findBinCrystal_(_otype, getElectronicsMap()->getDetId(_id));
504  }
505 
506  int
507  findBinRCT_(ObjectType _otype, DetId const& _id)
508  {
509  int xbin(0);
510  int ybin(0);
511  int nbinsX(0);
512 
513  EcalTrigTowerDetId ttid(_id);
514  int ieta(ttid.ieta());
515  int iphi((ttid.iphi() + 1) % 72 + 1);
516 
517  xbin = ieta < 0? ieta + 33: ieta + 32;
518  ybin = iphi;
519  nbinsX = 64;
520 
521  return (nbinsX + 2) * ybin + xbin;
522  }
523 
524  int
526  {
527  int xbin(0);
528  int ybin(0);
529  int nbinsX(0);
530  int subdet(_id.subdetId());
531 
532  if((subdet == EcalTriggerTower && !isEndcapTTId(_id)) || subdet == EcalBarrel){
533  EcalTrigTowerDetId ttid;
534  if(subdet == EcalBarrel) ttid = EBDetId(_id).tower();
535  else ttid = _id;
536 
537  int ieta(ttid.ieta());
538  int iphi((ttid.iphi() + 1) % 72 + 1);
539  switch(_otype){
540  case kEB:
541  xbin = iphi;
542  ybin = ieta < 0 ? ieta + 18 : ieta + 17;
543  nbinsX = 72;
544  break;
545  case kSM:
546  case kEBSM:
547  xbin = ieta < 0 ? -ieta : ieta;
548  ybin = ieta < 0 ? (iphi - 1) % 4 + 1 : 4 - (iphi - 1) % 4;
549  nbinsX = 17;
550  break;
551  case kEcal:
552  xbin = ieta < 0? ieta + 33: ieta + 32;
553  ybin = iphi > 70? iphi-70: iphi+2;
554  nbinsX = 64;
555  default:
556  break;
557  }
558  }
559  else if(subdet == EcalEndcap){
560  unsigned tccid(tccId(_id));
561  unsigned iSM(tccid <= 36 ? tccid % 18 / 2 : (tccid - 72) % 18 / 2);
562  return findBinCrystal_(_otype, _id, iSM);
563  }
564 
565  return (nbinsX + 2) * ybin + xbin;
566  }
567 
568  int
569  findBinPseudoStrip_(ObjectType _otype, DetId const& _id){
570 
571  int xbin(0);
572  int ybin(0);
573  int nbinsX(0);
574  int subdet(_id.subdetId());
575 
576  if((subdet == EcalTriggerTower && !isEndcapTTId(_id)) || subdet == EcalBarrel){
577  return findBinTriggerTower_(_otype, _id);
578  }
579  else if(subdet == EcalEndcap){
580  unsigned tccid(tccId(_id));
581  unsigned iSM(tccid <= 36 ? tccid % 18 / 2 : (tccid - 72) % 18 / 2);
582  return findBinCrystal_(_otype, _id, iSM);
583  }
584 
585  return (nbinsX + 2) * ybin + xbin;
586  }
587 
588  int
589  findBinSuperCrystal_(ObjectType _otype, const DetId& _id, int _iSM/* -1*/)
590  {
591  int xbin(0);
592  int ybin(0);
593  int nbinsX(0);
594  int subdet(_id.subdetId());
595 
596  if(subdet == EcalBarrel){
597  EBDetId ebid(_id);
598  int iphi(ebid.iphi());
599  int ieta(ebid.ieta());
600  switch(_otype){
601  case kEB:
602  xbin = (iphi - 1) / 5 + 1;
603  ybin = (ieta < 0 ? ieta + 85 : ieta + 84) / 5 + 1;
604  nbinsX = 72;
605  break;
606  case kSM:
607  case kEBSM:
608  xbin = (ieta < 0 ? -ieta - 1 : ieta - 1) / 5 + 1;
609  ybin = (ieta < 0 ? (iphi - 1) % 20 : 19 - (iphi - 1) % 20) / 5 + 1;
610  nbinsX = nEBSMEta / 5;
611  break;
612  default:
613  break;
614  }
615  }
616  else if(subdet == EcalEndcap){
617  if(isEcalScDetId(_id)){
618  EcalScDetId scid(_id);
619  int ix(scid.ix());
620  int iy(scid.iy());
621  switch(_otype){
622  case kEE:
623  {
624  int zside(scid.zside());
625  xbin = zside < 0 ? ix : ix + 20;
626  ybin = iy;
627  nbinsX = 40;
628  }
629  break;
630  case kEEm:
631  case kEEp:
632  xbin = ix;
633  ybin = iy;
634  nbinsX = 20;
635  break;
636  case kSM:
637  case kEESM:
638  {
639  int iSM(_iSM >= 0 ? _iSM : dccId(_id) - 1);
640  xbin = ix - xlow_(iSM) / 5;
641  ybin = iy - ylow_(iSM) / 5;
642  if(iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08)
643  nbinsX = nEESMXExt / 5;
644  else if(iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 || iSM == kEEp09)
645  nbinsX = nEESMXRed / 5;
646  else
647  nbinsX = nEESMX / 5;
648  }
649  break;
650  default:
651  break;
652  }
653  }
654  else{
655  EEDetId eeid(_id);
656  int ix(eeid.ix());
657  int iy(eeid.iy());
658  switch(_otype){
659  case kEE:
660  xbin = (eeid.zside() < 0 ? ix - 1 : ix + 99) / 5 + 1;
661  ybin = (iy - 1) / 5 + 1;
662  nbinsX = 40;
663  break;
664  case kEEm:
665  case kEEp:
666  xbin = (ix - 1) / 5 + 1;
667  ybin = (iy - 1) / 5 + 1;
668  nbinsX = 20;
669  break;
670  case kSM:
671  case kEESM:
672  {
673  int iSM(_iSM >= 0 ? _iSM : dccId(_id) - 1);
674  xbin = (ix - xlow_(iSM) - 1) / 5 + 1;
675  ybin = (iy - ylow_(iSM) - 1) / 5 + 1;
676  if(iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08)
677  nbinsX = nEESMXExt / 5;
678  else if(iSM == kEEm01 || iSM == kEEm05 || iSM == kEEm09 || iSM == kEEp01 || iSM == kEEp05 || iSM == kEEp09)
679  nbinsX = nEESMXRed / 5;
680  else
681  nbinsX = nEESMX / 5;
682  }
683  break;
684  default:
685  break;
686  }
687  }
688  }
689  else if(subdet == EcalTriggerTower && !isEndcapTTId(_id)){
690  EcalTrigTowerDetId ttid(_id);
691  int ieta(ttid.ieta());
692  int iphi((ttid.iphi() + 1) % 72 + 1);
693  switch(_otype){
694  case kEB:
695  xbin = iphi;
696  ybin = ieta < 0 ? ieta + 18 : ieta + 17;
697  nbinsX = 72;
698  break;
699  case kSM:
700  case kEBSM:
701  xbin = ieta < 0 ? -ieta : ieta;
702  ybin = ieta < 0 ? (iphi - 1) % 4 + 1 : 4 - (iphi - 1) % 4;
703  nbinsX = nEBSMEta / 5;
704  break;
705  default:
706  break;
707  }
708  }
709 
710  return (nbinsX + 2) * ybin + xbin;
711  }
712 
713  int
715  {
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  break;
729  case kSM:
730  case kEBSM:
731  xbin = (towerid - 1) / 4 + 1;
732  ybin = (isEBm ? towerid - 1 : 68 - towerid) % 4 + 1;
733  break;
734  default:
735  break;
736  }
737  }
738  else{
739  return findBinSuperCrystal_(_otype, EEDetId(getElectronicsMap()->getDetId(_id)).sc());
740  }
741 
742  return (nbinsX + 2) * ybin + xbin;
743  }
744  }
745 }
const double Pi
int findBinCrystal_(ObjectType, DetId const &, int=-1)
unsigned memDCCIndex(unsigned)
int findBinRCT_(ObjectType, DetId const &)
int i
Definition: DBlmapReader.cc:9
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
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: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)
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
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
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)