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",
def seqAND(name, subs=[])
The Application Manager class.