#!/bin/bash MAXINDEX="--max-index -1" TRANSPORT="--transport zeromq" VERBOSE="--verbose INFO" FAIRTASKNAME1="--task-name PndMvdPixelClusterTask" FAIRTASKNAME2="--task-name PndMvdStripClusterTask" while [[ $# > 1 ]] do key="$1" case $key in -f|--task-name) FAIRTASKNAME="--task-name $2" shift ;; -m|--max-index) MAXINDEX="--max-index $2" shift ;; -t|--transport) TRANSPORT="--transport $2" shift ;; -v|--verbose) VERBOSE="--verbose $2" shift ;; esac shift done ########################### Define some variables # JSON file containing the configuration parameters of all FairMQ devices of this example MQCONFIGFILE="@MVDMQ_FILE_LOCATION@/mvd/MvdMQ/run/options/CombinedClusterTask.json" # ASCII and ROOT parameter files for the processor device ROOTPARAM="@MVDMQ_FILE_LOCATION@/macro/run/simparams.root" ASCIIPARAM="@MVDMQ_FILE_LOCATION@/macro/params/all.par" # input file and branch for the sampler device INPUTFILE="@MVDMQ_FILE_LOCATION@/macro/run/digi_complete.root" INPUTBRANCH="data-out1=EventHeader. data-out1=MVDPixelDigis data-out2=EventHeader. data-out2=MVDStripDigis" # output file for sink OUTPUTFILE1="@MVDMQ_FILE_LOCATION@/macro/run/pixelRecoMQ.root" OUTPUTCLASS1="--class-name TClonesArray(PndSdsHit) --class-name TClonesArray(PndSdsClusterPixel)" OUTPUTBRANCH1="--branch-name MVDHitsPixel --branch-name MVDPixelCluster" OUTPUTFILE2="@MVDMQ_FILE_LOCATION@/macro/run/stripRecoMQ.root" OUTPUTCLASS2="--class-name TClonesArray(PndSdsHit) --class-name TClonesArray(PndSdsClusterStrip)" OUTPUTBRANCH2="--branch-name MVDHitsStrip --branch-name MVDStripCluster" ########################### ########################### Start the chain of the devices ########################## start Parameter server SERVER="parmq-server $TRANSPORT" SERVER+=" --id parmq-server --mq-config $MQCONFIGFILE" SERVER+=" --first-input-name $ROOTPARAM --second-input-name $ASCIIPARAM --second-input-type ASCII" xterm -geometry 80x25+0+350 -e @EXAMPLE9_BIN_LOCATION@/$SERVER & ########################## start SAMPLER SAMPLER="PndMQFileSampler $TRANSPORT" SAMPLER+=" --id sampler1 --mq-config $MQCONFIGFILE" SAMPLER+=" --file-name $INPUTFILE --branch-name $INPUTBRANCH $MAXINDEX" xterm -geometry 80x25+0+0 -e @MVDMQ_BIN_LOCATION@/$SAMPLER & ######################### start PROCESSORs Pixel PROCESSOR1="PndMQTaskProcessor $TRANSPORT" PROCESSOR1+=" $VERBOSE" PROCESSOR1+=" --id processor1 $FAIRTASKNAME1 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+500+0 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR1 & PROCESSOR2="PndMQTaskProcessor $TRANSPORT" PROCESSOR2+=" $VERBOSE" PROCESSOR2+=" --id processor2 $FAIRTASKNAME1 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+500+350 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR2 & PROCESSOR3="PndMQTaskProcessor $TRANSPORT" PROCESSOR3+=" $VERBOSE" PROCESSOR3+=" --id processor3 $FAIRTASKNAME1 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+500+700 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR3 & PROCESSOR4="PndMQTaskProcessor $TRANSPORT" PROCESSOR4+=" $VERBOSE" PROCESSOR4+=" --id processor4 $FAIRTASKNAME1 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+1000+0 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR4 & PROCESSOR5="PndMQTaskProcessor $TRANSPORT" PROCESSOR5+=" $VERBOSE" PROCESSOR5+=" --id processor5 $FAIRTASKNAME1 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+1000+350 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR5 & ######################### start PROCESSORs Strip PROCESSOR1="PndMQTaskProcessor $TRANSPORT" PROCESSOR1+=" $VERBOSE" PROCESSOR1+=" --id processor6 $FAIRTASKNAME2 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+550+0 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR1 & PROCESSOR2="PndMQTaskProcessor $TRANSPORT" PROCESSOR2+=" $VERBOSE" PROCESSOR2+=" --id processor7 $FAIRTASKNAME2 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+550+350 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR2 & PROCESSOR3="PndMQTaskProcessor $TRANSPORT" PROCESSOR3+=" $VERBOSE" PROCESSOR3+=" --id processor8 $FAIRTASKNAME2 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+550+700 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR3 & PROCESSOR4="PndMQTaskProcessor $TRANSPORT" PROCESSOR4+=" $VERBOSE" PROCESSOR4+=" --id processor9 $FAIRTASKNAME2 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+1050+0 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR4 & PROCESSOR5="PndMQTaskProcessor $TRANSPORT" PROCESSOR5+=" $VERBOSE" PROCESSOR5+=" --id processor10 $FAIRTASKNAME2 --mq-config $MQCONFIGFILE" xterm -geometry 80x25+1050+350 -e @MVDMQ_BIN_LOCATION@/$PROCESSOR5 & ########################## start FILESINK1 FILESINK="PndMQFileSink $TRANSPORT" FILESINK+=" --id sink1 --mq-config $MQCONFIGFILE" FILESINK+=" --file-name $OUTPUTFILE1 $OUTPUTCLASS1 $OUTPUTBRANCH1" xterm +aw -geometry 80x25+0+700 -e @MVDMQ_BIN_LOCATION@/$FILESINK & ########################## start FILESINK2 FILESINK="PndMQFileSink $TRANSPORT" FILESINK+=" --id sink2 --mq-config $MQCONFIGFILE" FILESINK+=" --file-name $OUTPUTFILE2 $OUTPUTCLASS2 $OUTPUTBRANCH2" xterm +aw -geometry 80x25+0+700 -e @MVDMQ_BIN_LOCATION@/$FILESINK &