13 A test modeling a production with subsequent modification of a data object. '/Event/B' experiences a conditional modification, 
   14 while '/Event/A' - an unconditional one: 
   15  (C): '/Event/B' <---- | UpdaterAlg3 (C) | ProducerAlg2 (C) | 
   16  (U): '/Event/A' <---- | UpdaterAlg2 (U) | ProducerAlg1 (C) | UpdaterAlg4 (U) | UpdaterAlg1 (C) | 
   19 from Configurables 
import (
 
   20     AvalancheSchedulerSvc,
 
   34 CPUCrunchSvc(shortCalib=
True)
 
   36 PrecedenceSvc(OutputLevel=DEBUG)
 
   38 whiteboard = HiveWhiteBoard(
"EventDataSvc", EventSlots=evtslots, OutputLevel=INFO)
 
   40 slimeventloopmgr = HiveSlimEventLoopMgr(
 
   41     SchedulerName=
"AvalancheSchedulerSvc", OutputLevel=INFO
 
   44 AvalancheSchedulerSvc(ThreadPoolSize=algosInFlight)
 
   46 producerAlg1 = CPUCruncher(name=
"ProducerAlg1")
 
   47 producerAlg1.outKeys = [
"/Event/A"]
 
   49 updaterAlg1 = CPUCruncher(name=
"UpdaterAlg1")
 
   50 updaterAlg1.outKeys = [
"/Event/A"]
 
   52 updaterAlg2 = CPUCruncher(name=
"UpdaterAlg2")
 
   53 updaterAlg2.outKeys = [
"/Event/A"]
 
   55 producerAlg2 = CPUCruncher(name=
"ProducerAlg2")
 
   56 producerAlg2.inpKeys = [
"/Event/A"]
 
   57 producerAlg2.outKeys = [
"/Event/B"]
 
   59 updaterAlg3 = CPUCruncher(name=
"UpdaterAlg3")
 
   60 updaterAlg3.outKeys = [
"/Event/B"]
 
   62 updaterAlg4 = CPUCruncher(name=
"UpdaterAlg4")
 
   63 updaterAlg4.outKeys = [
"/Event/A"]
 
   65 branch2 = 
GaudiSequencer(
"ConditionalBranch", Sequential=
True, ShortCircuit=
True)
 
   66 branch2.Members = [producerAlg1, updaterAlg1, producerAlg2, updaterAlg3]
 
   69 branch.Members = [branch2, updaterAlg2, updaterAlg4]
 
   75     EventLoop=slimeventloopmgr,
 
   77     MessageSvcType=
"InertMessageSvc",