47 def checkVDV( inputNodes, ancestorNames, allEVCAs ):
48 """ Try to make sure each VDV has a correctly-configred EVCA upstream """
50 for node
in inputNodes:
53 if "AthViews__ViewDataVerifier" in type( node ).__name__:
57 for name
in ancestorNames:
59 if name
in allEVCAs.keys():
62 parentAllowed = hasattr( allEVCAs[ name ],
"RequireParentView" )
and allEVCAs[ name ].RequireParentView
63 eventLevelAllowed = hasattr( allEVCAs[ name ],
"ViewFallThrough" )
and allEVCAs[ name ].ViewFallThrough
64 if not ( parentAllowed
or eventLevelAllowed ):
65 raise RuntimeError(
"ViewDataVerifier alg " +
node.name() +
" has upstream EventViewCreatorAlgorithm " + allEVCAs[ name ].
name() +
" with no external data" )
70 raise RuntimeError(
"ViewDataVerifier alg " +
node.name() +
" has no corresponding upstream EventViewCreatorAlgorithm" )
73 if "EventViewCreatorAlgorithm" in type( node ).__name__:
76 if node.ViewNodeName
in allEVCAs.keys():
78 raise RuntimeError(
"Found duplicate view node name " + node.ViewNodeName +
" configured for EVCAs " +
node.name() +
" and " + allEVCAs[ node.ViewNodeName ].
name() )
79 allEVCAs[ node.ViewNodeName ] = node
81 if not hasattr(node,
"RoITool"):
82 raise RuntimeError(
"Node name " +
node.name() +
" was not supplied with a RoITool" )