12 """Test a CF configuration with an algorithm shared between branches that can terminate early."""
15 from Configurables
import HiveWhiteBoard, HiveSlimEventLoopMgr, AvalancheSchedulerSvc, AlgResourcePool
16 from Configurables
import GaudiSequencer, CPUCruncher
23 whiteboard = HiveWhiteBoard(
24 "EventDataSvc", EventSlots=evtslots, OutputLevel=INFO)
26 slimeventloopmgr = HiveSlimEventLoopMgr(
27 SchedulerName=
"AvalancheSchedulerSvc", OutputLevel=DEBUG)
29 AvalancheSchedulerSvc(ThreadPoolSize=algosInFlight, OutputLevel=DEBUG)
33 """ parallel OR sequencer """
34 seq = GaudiSequencer(name)
36 seq.Sequential =
False
37 seq.ShortCircuit =
False
45 """ sequential AND sequencer """
46 seq = GaudiSequencer(name)
50 seq.ShortCircuit =
True
56 topSequence = GaudiSequencer(
"topSequence")
60 filterA = CPUCruncher(
"filterA")
61 and1A.Members.append(filterA)
65 and1A.Members.append(and2A)
68 and2A.Members.append(orA)
72 orA.Members.append(and3A)
74 alg1 = CPUCruncher(
"Alg1")
75 and3A.Members.append(alg1)
77 hypoA = CPUCruncher(
"hypoA")
78 and2A.Members.append(hypoA)
83 filterB = CPUCruncher(
"filterB", InvertDecision=
True)
84 and1B.Members.append(filterB)
88 and1B.Members.append(and2B)
91 and2B.Members.append(orB)
95 orB.Members.append(and3B)
97 alg2 = CPUCruncher(
"Alg2")
98 and3B.Members.append(alg1)
100 hypoB = CPUCruncher(
"hypoB")
101 and2B.Members.append(hypoB)
105 topSequence.Members.append(and1A)
106 topSequence.Members.append(and1B)
112 EventLoop=slimeventloopmgr,
113 TopAlg=[topSequence],
114 MessageSvcType=
"InertMessageSvc",