ATLAS Offline Software
Trigger
TrigT1
Global
GlobalSimulation
python
Digraph.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3
# Data structure adapted from Sedgewick and Wayne, Algorithms v4 p569
4
5
class
Digraph
:
6
"""Digraph is an implementation of digraphs which supports
7
adding edges and reversal"""
8
9
def
__init__
(self, V=0, fn=''):
10
self.
adjTable_
= {}
11
self.
E
= 0
12
if
fn:
13
self.
fromFile
(fn)
14
else
:
15
self.
V
= V
16
for
i
in
range
(V):
17
self.
adjTable_
[i] = []
18
19
def
fromFile
(self, fn):
20
state =
'START'
21
with
open
(fn,
'r'
)
as
fh:
22
for
ll
in
fh:
23
l = ll.strip()
24
if
not
l
or
l.startswith(
'#'
):
continue
25
26
if
state ==
'START'
:
27
self.
V
=
int
(l.strip())
28
for
i
in
range
(self.
V
):
29
self.
adjTable_
[i] =
list
()
30
state =
'NE'
31
continue
32
if
state ==
'NE'
:
33
# self.E = int(l.strip())
34
state =
'EDGES'
35
continue
36
37
if
state ==
'EDGES'
:
38
toks = l.strip().
split
()
39
assert
len(toks) == 2
40
v =
int
(toks[0])
41
w =
int
(toks[1])
42
self.
addEdge
(v, w)
43
continue
44
45
def
addEdge
(self, v, w):
46
assert
v < self.
V
47
assert
w < self.
V
48
self.
adjTable_
[v].
append
(w)
49
self.
E
+= 1
50
51
def
adj
(self, v):
52
assert
v < self.
V
53
return
self.
adjTable_
[v]
54
55
def
reverse
(self):
56
R =
Digraph
(self.
V
)
57
for
v
in
range
(self.
V
):
58
for
w
in
self.
adj
(v):
59
R.addEdge(w, v)
60
return
R
61
62
def
__str__
(self):
63
lines = [
'Digraph. V: '
+
str
(self.
V
) +
' E: '
+
str
(self.
E
)]
64
for
v
in
range
(self.
V
):
65
for
w
in
self.
adj
(v):
66
lines.append(
'%d -> %d'
% (v, w))
67
68
return
'\n'
.
join
(lines)
Digraph.Digraph.reverse
def reverse(self)
Definition:
Digraph.py:55
Digraph.Digraph
Definition:
Digraph.py:5
CaloCellPos2Ntuple.int
int
Definition:
CaloCellPos2Ntuple.py:24
Digraph.Digraph.__str__
def __str__(self)
Definition:
Digraph.py:62
dumpHVPathFromNtuple.append
bool append
Definition:
dumpHVPathFromNtuple.py:91
Digraph.Digraph.adj
def adj(self, v)
Definition:
Digraph.py:51
Digraph.Digraph.E
E
Definition:
Digraph.py:11
Digraph.Digraph.adjTable_
adjTable_
Definition:
Digraph.py:10
plotBeamSpotVxVal.range
range
Definition:
plotBeamSpotVxVal.py:195
Digraph.Digraph.__init__
def __init__(self, V=0, fn='')
Definition:
Digraph.py:9
histSizes.list
def list(name, path='/')
Definition:
histSizes.py:38
Digraph.Digraph.addEdge
def addEdge(self, v, w)
Definition:
Digraph.py:45
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition:
Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
Trk::open
@ open
Definition:
BinningType.h:40
Digraph.Digraph.fromFile
def fromFile(self, fn)
Definition:
Digraph.py:19
Digraph.Digraph.V
V
Definition:
Digraph.py:15
str
Definition:
BTagTrackIpAccessor.cxx:11
Trk::split
@ split
Definition:
LayerMaterialProperties.h:38
Generated on Thu Nov 7 2024 21:13:41 for ATLAS Offline Software by
1.8.18