12"""Test a CF configuration with an algorithm shared between branches that can terminate early."""
14from Configurables
import (
15 AvalancheSchedulerSvc,
28whiteboard =
HiveWhiteBoard(
"EventDataSvc", EventSlots=evtslots, OutputLevel=INFO)
31 SchedulerName=
"AvalancheSchedulerSvc", OutputLevel=DEBUG
38 """parallel OR sequencer"""
39 seq = Gaudi__Sequencer(name)
41 seq.Sequential = False
42 seq.ShortCircuit = False
43 # seq.StopOverride = False
49def seqAND(name, subs=[]):
50 """sequential AND sequence
r"""
51 seq = Gaudi__Sequencer(name)
54 # seq.StopOverride = True
55 seq.ShortCircuit = True
61topSequence = Gaudi__Sequencer("topSequence")
63and1A = seqAND("AND1A")
65filterA = CPUCruncher("filterA")
66and1A.Members.append(filterA)
68and2A = seqAND("AND2A")
69# and2A.StopOverride = True
70and1A.Members.append(and2A)
73and2A.Members.append(orA)
75and3A = seqAND("AND3A")
76# and3A.StopOverride = True
77orA.Members.append(and3A)
79alg1 = CPUCruncher("Alg1")
80and3A.Members.append(alg1)
82hypoA = CPUCruncher("hypoA")
83and2A.Members.append(hypoA)
86and1B = seqAND("AND1B")
88filterB = CPUCruncher("filterB", InvertDecision=True)
89and1B.Members.append(filterB)
91and2B = seqAND("AND2B")
92# and2B.StopOverride = True
93and1B.Members.append(and2B)
96and2B.Members.append(orB)
98and3B = seqAND("AND3B")
99# and3B.StopOverride = True
100orB.Members.append(and3B)
102alg2 = CPUCruncher("Alg2")
103and3B.Members.append(alg1)
105hypoB = CPUCruncher("hypoB")
106and2B.Members.append(hypoB)
110topSequence.Members.append(and1A)
111topSequence.Members.append(and1B)
117 EventLoop=slimeventloopmgr,
118 TopAlg=[topSequence],
119 MessageSvcType="InertMessageSvc",