1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#include "CondFormats/HcalObjects/interface/HcalDetIdTransform.h"
#include "DataFormats/HcalDetId/interface/HcalDetId.h"
#include "FWCore/Utilities/interface/Exception.h"
namespace HcalDetIdTransform {
unsigned transform(const HcalDetId& id, const unsigned transformCode) {
static const int ietaShift = 1024;
static const int maxHcalDepth = 64;
if (transformCode >= N_TRANSFORMS)
throw cms::Exception(
"In HcalDetIdTransform::transform:"
" invalid transform code");
unsigned t = 0;
switch (transformCode) {
case RAWID:
t = id.rawId();
break;
case IETA:
t = id.ieta() + ietaShift;
break;
case IETAABS:
t = id.ietaAbs();
break;
case SUBDET:
t = id.subdetId();
break;
case IETADEPTH:
t = (id.ieta() + ietaShift) * maxHcalDepth + id.depth();
break;
case IETAABSDEPTH:
t = id.ietaAbs() * maxHcalDepth + id.depth();
break;
default:
throw cms::Exception(
"In HcalDetIdTransform::transform:"
" unhandled switch clause. This is a bug."
" Please report.");
}
return t;
}
void validateCode(const unsigned transformCode) {
if (transformCode >= N_TRANSFORMS)
throw cms::Exception(
"In HcalDetIdTransform::validateCode:"
" invalid transform code");
}
} // namespace HcalDetIdTransform
|