<?xml version="1.0" encoding="UTF-8"?>
<gridmake specification="v1.0" xmlns="http://www.gluex.org/gridmake"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.gluex.org/gridmake gridmake-1_0.xsd">

  <srm>srm://grinch.phys.uconn.edu/Gluex/gxtwist-9-2014</srm>

  <package name="hello">
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/hello/1.0/setup"/>
  </package>

  <package name="sim-recon">
    <requires package="xerces-c"/>
    <requires package="root"/>
    <requires package="cernlib"/>
    <!--requires package="geant4"/-->
    <requires package="amptools"/>
    <requires package="jana"/>
    <requires package="evio"/>
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/sim-recon/15278/setup"/>
  </package>

  <package name="xerces-c">
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/xerces-c/2.8.0/setup"/>
  </package>

  <package name="root">
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/root/5.34.03/setup"/>
  </package>

  <package name="CLHEP">
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/clhep/2.0.4.5/setup"/>
  </package>

  <package name="cernlib">
    <requires package="CLHEP"/>
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/cernlib/2005/setup"/>
  </package>

  <package name="geant4">
    <requires package="CLHEP"/>
    <requires package="xerces-c"/>
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/geant4/4.9.5.p01/setup"/>
  </package>

  <package name="amptools">
    <requires package="CLHEP"/>
    <requires package="root"/>
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/amptools/0.3/setup"/>
  </package>

  <package name="evio">
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/evio/2.0b/setup"/>
  </package>

  <package name="jana">
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/jana/0.7.2/setup"/>
  </package>

  <package name="threePi">
    <requires package="sim-recon"/>
    <setup src="http://gryphn.phys.uconn.edu/prod/scripts/package/threePi/1.0/setup"/>
  </package>

  <processor name="test" force="yes">
    <output>hello_world</output>
    <requires package="hello"/>
    <script>
      #!/bin/bash
      hello >hello_world
    </script>
  </processor>

  <processor name="bggen_9001" force="no">
    <output>bggen_09001_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      EVENTS=100
      RSEQ=$(PROCESS)
      cp  $SIM_CONDITIONS/pythia-geant.map .
      cp  $SIM_CONDITIONS/pythia.dat .
      cp  $SIM_CONDITIONS/particle.dat .
      awk '/^TRIG/{print "TRIG	'$EVENTS' 	number of events to simulate";next}\
           /^WROUT/{print "WROUT	1	0	0	hddm output only";next}\
           /^RUNNO/{print "RUNNO	9001	run number for output events";next}\
           /^NPRIEV/{print "NPRIEV	5		only print first few events";next}\
           /^EPHLIM/{print "EPHLIM	8.4	9.0	energy range in GeV";next}\
           /^RNDMSEQ/{print "RNDMSEQ	'$RSEQ'		random number sequence";next}\
                     {print}' \
        $SIM_CONDITIONS/run.ffr.template > fort.15
      $HALLD_HOME/$BMS_OSNAME/bin/bggen
      retcode=$?
      if [ $retcode = 0 ]; then
          mv bggen.hddm bggen_09001_$(PROCESS).hddm
      else
          rm bggen.hddm
      fi
      rm pythia-geant.map
      rm pythia.dat
      rm particle.dat
      rm bggen.his
      rm fort.15
      exit $retcode
    </script>
  </processor>

  <processor name="bggen_9002" force="no">
    <output>bggen_09002_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      EVENTS=100
      RSEQ=$(PROCESS)
      cp  $SIM_CONDITIONS/pythia-geant.map .
      cp  $SIM_CONDITIONS/pythia.dat .
      cp  $SIM_CONDITIONS/particle.dat .
      awk '/^TRIG/{print "TRIG	'$EVENTS' 	number of events to simulate";next}\
           /^WROUT/{print "WROUT	1	0	0	hddm output only";next}\
           /^RUNNO/{print "RUNNO	9002	run number for output events";next}\
           /^NPRIEV/{print "NPRIEV	5		only print first few events";next}\
           /^EPHLIM/{print "EPHLIM	8.4	9.0	energy range in GeV";next}\
           /^RNDMSEQ/{print "RNDMSEQ	'$RSEQ'		random number sequence";next}\
                     {print}' \
        $SIM_CONDITIONS/run.ffr.template > fort.15
      $HALLD_HOME/$BMS_OSNAME/bin/bggen
      retcode=$?
      if [ $retcode = 0 ]; then
          mv bggen.hddm bggen_09002_$(PROCESS).hddm
      else
          rm bggen.hddm
      fi
      rm pythia-geant.map
      rm pythia.dat
      rm particle.dat
      rm bggen.his
      rm fort.15
      exit $retcode
    </script>
  </processor>

  <processor name="bggen_9003" force="no">
    <output>bggen_09003_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      EVENTS=100
      RSEQ=$(PROCESS)
      cp  $SIM_CONDITIONS/pythia-geant.map .
      cp  $SIM_CONDITIONS/pythia.dat .
      cp  $SIM_CONDITIONS/particle.dat .
      awk '/^TRIG/{print "TRIG	'$EVENTS' 	number of events to simulate";next}\
           /^WROUT/{print "WROUT	1	0	0	hddm output only";next}\
           /^RUNNO/{print "RUNNO	9003	run number for output events";next}\
           /^NPRIEV/{print "NPRIEV	5		only print first few events";next}\
           /^EPHLIM/{print "EPHLIM	8.4	9.0	energy range in GeV";next}\
           /^RNDMSEQ/{print "RNDMSEQ	'$RSEQ'		random number sequence";next}\
                     {print}' \
        $SIM_CONDITIONS/run.ffr.template > fort.15
      $HALLD_HOME/$BMS_OSNAME/bin/bggen
      retcode=$?
      if [ $retcode = 0 ]; then
          mv bggen.hddm bggen_09003_$(PROCESS).hddm
      else
          rm bggen.hddm
      fi
      rm pythia-geant.map
      rm pythia.dat
      rm particle.dat
      rm bggen.his
      rm fort.15
      exit $retcode
    </script>
  </processor>

  <processor name="hdgeant_9001" force="no">
    <input>bggen_09001_$(PROCESS).hddm</input>
    <output>hdgeant_09001_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      awk '/^[Cc]*INFI/{print "INFILE \x27""bggen_09001_$(PROCESS).hddm""\x27";next}\
           /^[Cc]*TRIG/{print "TRIG 100000000";next}\
           /^[Cc]*SWIT/{print "SWIT 0 0 0 0 0 0 0 0 0 0";next}\
           /^[Cc]*DEBU/{print "cDEBU 1 10 1000";next}\
                    {print}' \
        $SIM_CONDITIONS/control.in_9001 >control.in
      $HALLD_HOME/$BMS_OSNAME/bin/hdgeant
      retcode=$?
      if [ $retcode = 0 ]; then
          mv hdgeant.hddm hdgeant_09001_$(PROCESS).hddm
      else
          rm hdgeant.hddm
      fi
      rm geant.hbook
      rm hdgeant.rz
      rm control.in
      exit $retcode
    </script>
  </processor>

  <processor name="hdgeant_9002" force="no">
    <input>bggen_09002_$(PROCESS).hddm</input>
    <output>hdgeant_09002_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      awk '/^[Cc]*INFI/{print "INFILE \x27""bggen_09002_$(PROCESS).hddm""\x27";next}\
           /^[Cc]*TRIG/{print "TRIG 100000000";next}\
           /^[Cc]*SWIT/{print "SWIT 0 0 0 0 0 0 0 0 0 0";next}\
           /^[Cc]*DEBU/{print "cDEBU 1 10 1000";next}\
                    {print}' \
        $SIM_CONDITIONS/control.in_9002 >control.in
      $HALLD_HOME/$BMS_OSNAME/bin/hdgeant
      retcode=$?
      if [ $retcode = 0 ]; then
          mv hdgeant.hddm hdgeant_09002_$(PROCESS).hddm
      else
          rm hdgeant.hddm
      fi
      rm geant.hbook
      rm hdgeant.rz
      rm control.in
      exit $retcode
    </script>
  </processor>

  <processor name="hdgeant_9003" force="no">
    <input>bggen_09003_$(PROCESS).hddm</input>
    <output>hdgeant_09003_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      awk '/^[Cc]*INFI/{print "INFILE \x27""bggen_09003_$(PROCESS).hddm""\x27";next}\
           /^[Cc]*TRIG/{print "TRIG 100000000";next}\
           /^[Cc]*SWIT/{print "SWIT 0 0 0 0 0 0 0 0 0 0";next}\
           /^[Cc]*DEBU/{print "cDEBU 1 10 1000";next}\
                    {print}' \
        $SIM_CONDITIONS/control.in_9003 >control.in
      $HALLD_HOME/$BMS_OSNAME/bin/hdgeant
      retcode=$?
      if [ $retcode = 0 ]; then
          mv hdgeant.hddm hdgeant_09003_$(PROCESS).hddm
      else
          rm hdgeant.hddm
      fi
      rm geant.hbook
      rm hdgeant.rz
      rm control.in
      exit $retcode
    </script>
  </processor>

  <processor name="mcsmear_9001" force="no">
    <input>hdgeant_09001_$(PROCESS).hddm</input>
    <output>hdgeant_smeared_09001_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/mcsmear -PJANA:BATCH_MODE=1 \
                                          -PTHREAD_TIMEOUT_FIRST_EVENT=1800 \
                                          -PTHREAD_TIMEOUT=3600 \
                                  hdgeant_09001_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv hdgeant_09001_$(PROCESS)_smeared.hddm hdgeant_smeared_09001_$(PROCESS).hddm
      else
          rm hdgeant_09001_$(PROCESS)_smeared.hddm
      fi
      rm smear.root
      exit $retcode
    </script>
  </processor>

  <processor name="mcsmear_9002" force="no">
    <input>hdgeant_09002_$(PROCESS).hddm</input>
    <output>hdgeant_smeared_09002_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/mcsmear -PJANA:BATCH_MODE=1 \
                                          -PTHREAD_TIMEOUT_FIRST_EVENT=1800 \
                                          -PTHREAD_TIMEOUT=3600 \
                                  hdgeant_09002_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv hdgeant_09002_$(PROCESS)_smeared.hddm hdgeant_smeared_09002_$(PROCESS).hddm
      else
          rm hdgeant_09002_$(PROCESS)_smeared.hddm
      fi
      rm smear.root
      exit $retcode
    </script>
  </processor>

  <processor name="mcsmear_9003" force="no">
    <input>hdgeant_09003_$(PROCESS).hddm</input>
    <output>hdgeant_smeared_09003_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/mcsmear -PJANA:BATCH_MODE=1 \
                                          -PTHREAD_TIMEOUT_FIRST_EVENT=1800 \
                                          -PTHREAD_TIMEOUT=3600 \
                                  hdgeant_09003_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv hdgeant_09003_$(PROCESS)_smeared.hddm hdgeant_smeared_09003_$(PROCESS).hddm
      else
          rm hdgeant_09003_$(PROCESS)_smeared.hddm
      fi
      rm smear.root
      exit $retcode
    </script>
  </processor>

  <processor name="danahddm_9001" force="no">
    <input>hdgeant_smeared_09001_$(PROCESS).hddm</input>
    <output>dana_events_09001_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_ana -PPLUGINS=danahddm \
                                         -PTHREAD_TIMEOUT=1800 \
                                         -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                         -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                         -PHDDM:USE_COMPRESSION=1 \
                                  hdgeant_smeared_09001_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_events.hddm dana_events_09001_$(PROCESS).hddm
      else
          rm dana_events.hddm
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danahddm_9002" force="no">
    <input>hdgeant_smeared_09002_$(PROCESS).hddm</input>
    <output>dana_events_09002_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_ana -PPLUGINS=danahddm \
                                         -PTHREAD_TIMEOUT=1800 \
                                         -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                         -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                         -PHDDM:USE_COMPRESSION=1 \
                                  hdgeant_smeared_09002_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_events.hddm dana_events_09002_$(PROCESS).hddm
      else
          rm dana_events.hddm
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danahddm_9003" force="no">
    <input>hdgeant_smeared_09003_$(PROCESS).hddm</input>
    <output>dana_events_09001_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_ana -PPLUGINS=danahddm \
                                         -PTHREAD_TIMEOUT=1800 \
                                         -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                         -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                         -PHDDM:USE_COMPRESSION=1 \
                                  hdgeant_smeared_09003_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_events.hddm dana_events_09003_$(PROCESS).hddm
      else
          rm dana_events.hddm
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danarest_9001" force="no">
    <input>hdgeant_smeared_09001_$(PROCESS).hddm</input>
    <output store="yes">dana_rest_09001_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_ana -PPLUGINS=danarest \
                                         -PTHREAD_TIMEOUT=1800 \
                                         -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                         -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                         -PHDDM:USE_COMPRESSION=1 \
                                  hdgeant_smeared_09001_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_rest.hddm dana_rest_09001_$(PROCESS).hddm
      else
          rm dana_rest.hddm
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danarest_9002" force="no">
    <input>hdgeant_smeared_09002_$(PROCESS).hddm</input>
    <output store="yes">dana_rest_09002_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_ana -PPLUGINS=danarest \
                                         -PTHREAD_TIMEOUT=1800 \
                                         -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                         -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                         -PHDDM:USE_COMPRESSION=1 \
                                  hdgeant_smeared_09002_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_rest.hddm dana_rest_09002_$(PROCESS).hddm
      else
          rm dana_rest.hddm
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danarest_9003" force="no">
    <input>hdgeant_smeared_09003_$(PROCESS).hddm</input>
    <output store="yes">dana_rest_09003_$(PROCESS).hddm</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_ana -PPLUGINS=danarest \
                                         -PTHREAD_TIMEOUT=1800 \
                                         -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                         -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                         -PHDDM:USE_COMPRESSION=1 \
                                  hdgeant_smeared_09003_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_rest.hddm dana_rest_09003_$(PROCESS).hddm
      else
          rm dana_rest.hddm
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danaroot_9001" force="no">
    <input>hdgeant_smeared_09001_$(PROCESS).hddm</input>
    <output store="yes">dana_rest_09001_$(PROCESS).hddm</output>
    <output store="yes">hd_root_09001_$(PROCESS).root</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_root -PPLUGINS=monitoring_hists,danarest \
                                          -PTHREAD_TIMEOUT=1800 \
                                          -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                          -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                  hdgeant_smeared_09001_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_rest.hddm dana_rest_09001_$(PROCESS).hddm
          mv hd_root.root hd_root_09001_$(PROCESS).root
      else
          rm dana_rest.hddm
          rm hd_root.root
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danaroot_9002" force="no">
    <input>hdgeant_smeared_09002_$(PROCESS).hddm</input>
    <output store="yes">dana_rest_09002_$(PROCESS).hddm</output>
    <output store="yes">hd_root_09002_$(PROCESS).root</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_root -PPLUGINS=monitoring_hists,danarest \
                                          -PTHREAD_TIMEOUT=1800 \
                                          -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                          -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                  hdgeant_smeared_09002_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_rest.hddm dana_rest_09002_$(PROCESS).hddm
          mv hd_root.root hd_root_09002_$(PROCESS).root
      else
          rm dana_rest.hddm
          rm hd_root.root
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="danaroot_9003" force="no">
    <input>hdgeant_smeared_09003_$(PROCESS).hddm</input>
    <output store="yes">dana_rest_09003_$(PROCESS).hddm</output>
    <output store="yes">hd_root_09003_$(PROCESS).root</output>
    <requires package="sim-recon"/>
    <script>
      #!/bin/bash
      $HALLD_HOME/$BMS_OSNAME/bin/hd_root -PPLUGINS=monitoring_hists,danarest \
                                          -PTHREAD_TIMEOUT=1800 \
                                          -PTHREAD_TIMEOUT_FIRST_EVENT=3600 \
                                          -PNTHREADS=1 -PJANA:BATCH_MODE=1 \
                                  hdgeant_smeared_09003_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv dana_rest.hddm dana_rest_09003_$(PROCESS).hddm
          mv hd_root.root hd_root_09003_$(PROCESS).root
      else
          rm dana_rest.hddm
          rm hd_root.root
      fi
      exit $retcode
    </script>
  </processor>

  <processor name="gxtwist" force="no">
    <output store="yes">gxtwist_v001_$(PROCESS).root</output>
    <requires package="sim-recon"/>
    <requires package="root"/>
    <script>
      #!/bin/bash
      seed1=`python -c 'print hash("$(PROCESS) sequence first seed") &amp; 0x7fffffff'`
      seed2=`python -c 'print hash("$(PROCESS) sequence second seed") &amp; 0x7fffffff'`
      awk '/^[Cc]*RNDM/{print "RNDM '$seed1' '$seed2'";next}\
           /^[Cc]*TRIG/{print "TRIG @@events to generate@@";next}\
           /^[Cc]*SWIT/{print "SWIT 0 0 0 0 0 0 0 0 0 0";next}\
           /^[Cc]*CUTS/{print "CUTS 1e-4 1e-4 1e-5 1e-3 1e-4";next}\
           /^[Cc]*DEBU/{print "cDEBU 1 10 1000";next}\
                    {print}' \
        $SIM_CONDITIONS/control.in_gxtwist >control.in
      ln -s $JANA_RESOURCE_DIR/TOSCA_tagger_dipole-15000G.map.gz .
      ln -s $JANA_RESOURCE_DIR/TOSCA_tagger_quadrupole-nominal.map.gz .
      $HALLD_HOME/$BMS_OSNAME/bin/gxtwist
      retcode=$?
      if [ $retcode = 0 ]; then
          h2root geant.hbook gxtwist_v001_$(PROCESS).root 1 1 65536 8000 1
      fi
      rm -f *.hddm TOSCA*
      rm -f gxtwist.rz
      rm -f geant.hbook
      rm -f flukaerr.dat
      rm control.in
      exit $retcode
    </script>
  </processor>

  <processor name="threepi" force="no">
    <input>dana_events_09001_$(PROCESS).hddm</input>
    <output>three_pion_$(PROCESS).root</output>
    <requires package="threePi"/>
    <script>
      #!/bin/bash
      threePi -PTHREAD_TIMEOUT=300 dana_events_09001_$(PROCESS).hddm
      retcode=$?
      if [ $retcode = 0 ]; then
          mv three_pion.root three_pion_$(PROCESS).root
      else
          rm three_pion.root
      fi
      exit $retcode
    </script>
  </processor>

</gridmake>
