ATLAS Offline Software
Loading...
Searching...
No Matches
python.virtual_logic.DefectLogic Class Reference
Inheritance diagram for python.virtual_logic.DefectLogic:
Collaboration diagram for python.virtual_logic.DefectLogic:

Public Types

typedef HLT::TypeInformation::for_each_type_c< typenameEDMLIST::map, my_functor, my_result<>, my_arg< HLT::TypeInformation::get_cont, CONTAINER > >::type result

Public Member Functions

None __init__ (self, defect_iov)
DEFECT_IOV bad_evaluator (self, states)
None set_evaluation (self, bool full)
DEFECT_IOV evaluate_full (self, Mapping[str, DEFECT_IOV] states)
DEFECT_IOV evaluate_partial (self, Mapping[str, DEFECT_IOV] states)

Public Attributes

 name = defect_iov.channel
 clauses = defect_iov.clauses.split()
 operations = set()
 inverting = set()
 realclauses = set(_[1] for _ in self.operations)
 primary_defects = set()
DEFECT_IOV evaluate = self.bad_evaluator
list dependencies

Protected Member Functions

None _operations_parse (self)
None _populate (self, Mapping[str, DefectLogic] defect_logics)

Detailed Description

Definition at line 9 of file virtual_logic.py.

Member Typedef Documentation

◆ result

Definition at line 90 of file EDM_MasterSearch.h.

Constructor & Destructor Documentation

◆ __init__()

None python.virtual_logic.DefectLogic.__init__ ( self,
defect_iov )

Definition at line 10 of file virtual_logic.py.

10 def __init__(self, defect_iov) -> None:
11 self.name = defect_iov.channel
12 self.clauses = defect_iov.clauses.split()
13 self.operations = set()
14 self.inverting = set()
15 self._operations_parse()
16 self.realclauses = set(_[1] for _ in self.operations)
17 self.primary_defects = set()
18 self.evaluate = self.bad_evaluator
19
STL class.

Member Function Documentation

◆ _operations_parse()

None python.virtual_logic.DefectLogic._operations_parse ( self)
protected

Definition at line 29 of file virtual_logic.py.

29 def _operations_parse(self) -> None:
30 from operator import truth, not_
31 for name in self.clauses:
32 if name[0] == '!':
33 self.operations.add((not_, name[1:]))
34 self.inverting.add(name[1:])
35 else:
36 self.operations.add((truth, name))
37
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55

◆ _populate()

None python.virtual_logic.DefectLogic._populate ( self,
Mapping[str, DefectLogic] defect_logics )
protected
Populate the dependencies with logic objects, and the primary defects.

Definition at line 38 of file virtual_logic.py.

38 def _populate(self, defect_logics: Mapping[str, DefectLogic]) -> None:
39 """
40 Populate the dependencies with logic objects, and the primary defects.
41 """
42 self.dependencies = [defect_logics[name] for _, name in self.operations
43 if name in defect_logics]
44
45 # Primary defects are those which aren't in the logics dictionary.
46 self.primary_defects = set(c for _, c in self.operations
47 if c not in defect_logics)
48

◆ bad_evaluator()

DEFECT_IOV python.virtual_logic.DefectLogic.bad_evaluator ( self,
states )

Definition at line 20 of file virtual_logic.py.

20 def bad_evaluator(self, states) -> DEFECT_IOV:
21 raise RuntimeError("bad_evaluator should never be called")
22

◆ evaluate_full()

DEFECT_IOV python.virtual_logic.DefectLogic.evaluate_full ( self,
Mapping[str, DEFECT_IOV] states )
Evaluate this defect logic for a point in time.

Parameters
    `states` :

Definition at line 49 of file virtual_logic.py.

49 def evaluate_full(self, states: Mapping[str, DEFECT_IOV]) -> DEFECT_IOV:
50 """
51 Evaluate this defect logic for a point in time.
52
53 Parameters
54 `states` :
55 """
56 from operator import not_
57 inputs = [(op, states[c]) for op, c in self.operations if c in states if states[c]]
58 #inputs = [x for x in inputs if x]
59 uninverted = [_ for _ in self.inverting if _ not in states or not states[_]]
60 if not inputs and not uninverted:
61 return None
62 return DEFECT_IOV(None, None, self.name,
63 present =reduce(bool.__or__, (op(i.present) for op, i in inputs), False) or len(uninverted),
64 recoverable=reduce(bool.__and__, (not not i.recoverable for op, i in inputs
65 if op(i.present)), False),
66 user="sys:virtual",
67 comment=" ".join(sorted([(('!' if op == not_ else '') + i.channel) for op, i in inputs if op(i.present)]
68 +['!'+_ for _ in uninverted]))
69 )
70
static void reduce(HepMC::GenEvent *ge, HepMC::GenParticle *gp)
Remove an unwanted particle from the event, collapsing the graph structure consistently.
Definition FixHepMC.cxx:39

◆ evaluate_partial()

DEFECT_IOV python.virtual_logic.DefectLogic.evaluate_partial ( self,
Mapping[str, DEFECT_IOV] states )
Evaluate this defect logic for a point in time.

Parameters
    `states` :

Definition at line 71 of file virtual_logic.py.

71 def evaluate_partial(self, states: Mapping[str, DEFECT_IOV]) -> DEFECT_IOV:
72 """
73 Evaluate this defect logic for a point in time.
74
75 Parameters
76 `states` :
77 """
78 inputs = [(op, states[c]) for op, c in self.operations if c in states and states[c]]
79 #inputs = [x for x in inputs if x]
80 uninverted = [_ for _ in self.inverting if _ not in states or not states[_]]
81 if not inputs and not uninverted:
82 return None
83 return DEFECT_IOV(None, None, self.name,
84 present =reduce(bool.__or__, (op(i.present) for op, i in inputs), False) or len(uninverted),
85 recoverable=False,
86 user="sys:virtual",
87 comment=""
88 )

◆ set_evaluation()

None python.virtual_logic.DefectLogic.set_evaluation ( self,
bool full )

Definition at line 23 of file virtual_logic.py.

23 def set_evaluation(self, full: bool) -> None:
24 if full:
25 self.evaluate = self.evaluate_full
26 else:
27 self.evaluate = self.evaluate_partial
28

Member Data Documentation

◆ clauses

python.virtual_logic.DefectLogic.clauses = defect_iov.clauses.split()

Definition at line 12 of file virtual_logic.py.

◆ dependencies

list python.virtual_logic.DefectLogic.dependencies
Initial value:
= [defect_logics[name] for _, name in self.operations
if name in defect_logics]

Definition at line 42 of file virtual_logic.py.

◆ evaluate

DEFECT_IOV python.virtual_logic.DefectLogic.evaluate = self.bad_evaluator

Definition at line 18 of file virtual_logic.py.

◆ inverting

python.virtual_logic.DefectLogic.inverting = set()

Definition at line 14 of file virtual_logic.py.

◆ name

python.virtual_logic.DefectLogic.name = defect_iov.channel

Definition at line 11 of file virtual_logic.py.

◆ operations

python.virtual_logic.DefectLogic.operations = set()

Definition at line 13 of file virtual_logic.py.

◆ primary_defects

python.virtual_logic.DefectLogic.primary_defects = set()

Definition at line 17 of file virtual_logic.py.

◆ realclauses

python.virtual_logic.DefectLogic.realclauses = set(_[1] for _ in self.operations)

Definition at line 16 of file virtual_logic.py.


The documentation for this class was generated from the following file: