ATLAS Offline Software
geo_id.py
Go to the documentation of this file.
1 # import ROOT
2 
3 import sys
4 
5 # file = sys.argv[1]
6 
8  volume_mask = 0xff00000000000000
9  boundary_mask = 0x00ff000000000000
10  layer_mask = 0x0000ff0000000000
11  approach_mask = 0x000000f000000000
12  sensitive_mask = 0x0000000ffff00000
13  channel_mask = 0x00000000000fffff
14 
15  def __init__(self, value):
16  assert type(value) == long
17  self._value = value
18 
19  def _ffs(self, x):
20  """Returns the index, counting from 0, of the
21  least significant set bit in `x`.
22  """
23  return (x&-x).bit_length()-1
24 
25  @property
26  def vol_id(self):
27  return self.value(self.volume_mask)
28 
29  @property
30  def bnd_id(self):
31  return self.value(self.boundary_mask)
32 
33  @property
34  def lay_id(self):
35  return self.value(self.layer_mask)
36 
37  @property
38  def app_id(self):
39  return self.value(self.approach_mask)
40 
41  @property
42  def sen_id(self):
43  return self.value(self.sensitive_mask)
44 
45  @property
46  def chn_id(self):
47  return self.value(self.channel_mask)
48 
49  def value(self, mask = None):
50  if mask == None: return self._value
51  return (self._value & mask) >> self._ffs(mask)
52 
53  def __repr__(self):
54  fmt = "GeometryIdentifier(vol={}, bnd={}, lay={}, app={}, sen={}, chn={})"
55  return fmt.format(self.vol_id,
56  self.bnd_id,
57  self.lay_id,
58  self.app_id,
59  self.sen_id,
60  self.chn_id)
61 
62 # infile = ROOT.TFile.Open(file)
63 
64 # tree = infile.Get("MaterialTracks")
65 
66 # for idx, event in enumerate(tree):
67  # for geo_id_ in event.step_geo_id:
68  # geo_id = GeometryIdentifier(geo_id_)
69  # print(geo_id)
70 
71  # print("----")
72 
73 
geo_id.GeometryIdentifier
Definition: geo_id.py:7
geo_id.GeometryIdentifier.chn_id
def chn_id(self)
Definition: geo_id.py:46
geo_id.GeometryIdentifier.vol_id
def vol_id(self)
Definition: geo_id.py:26
geo_id.GeometryIdentifier.lay_id
def lay_id(self)
Definition: geo_id.py:34
geo_id.GeometryIdentifier.layer_mask
layer_mask
Definition: geo_id.py:10
geo_id.GeometryIdentifier._ffs
def _ffs(self, x)
Definition: geo_id.py:19
geo_id.GeometryIdentifier._value
_value
Definition: geo_id.py:17
geo_id.GeometryIdentifier.app_id
def app_id(self)
Definition: geo_id.py:38
geo_id.GeometryIdentifier.channel_mask
channel_mask
Definition: geo_id.py:13
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
geo_id.GeometryIdentifier.sensitive_mask
sensitive_mask
Definition: geo_id.py:12
geo_id.GeometryIdentifier.__init__
def __init__(self, value)
Definition: geo_id.py:15
geo_id.GeometryIdentifier.approach_mask
approach_mask
Definition: geo_id.py:11
geo_id.GeometryIdentifier.volume_mask
volume_mask
Definition: geo_id.py:8
geo_id.GeometryIdentifier.__repr__
def __repr__(self)
Definition: geo_id.py:53
geo_id.GeometryIdentifier.bnd_id
def bnd_id(self)
Definition: geo_id.py:30
geo_id.GeometryIdentifier.boundary_mask
boundary_mask
Definition: geo_id.py:9
geo_id.GeometryIdentifier.value
def value(self, mask=None)
Definition: geo_id.py:49
geo_id.GeometryIdentifier.sen_id
def sen_id(self)
Definition: geo_id.py:42