8# ------------------------------------------------------------------------------------------
 
   10#    Script to jointly run JRandomTimesliceWriter and JTriggerProcessor in run-by-run mode.
 
   12# ------------------------------------------------------------------------------------------
 
   14if [ -z $JPP_DIR ]; then
 
   15    echo "Variable JPP_DIR undefined."
 
   19source $JPP_DIR/setenv.sh $JPP_DIR
 
   21set_variable:  DEBUG                 RANDOMEVENT_DEBUG                      1
 
   22set_variable:  WORKDIR               RANDOMEVENT_WORKDIR                    ./
 
   23set_variable:  BACKGROUND_HZ         RANDOMEVENT_BACKGROUND_HZ              `getK40Rates`
 
   24set_variable:  SEED                  RANDOMEVENT_SEED                       0
 
   25set_variable:  NUMBER_OF_SLICES      RANDOMEVENT_SLICES                     10
 
   26set_variable:  RECYCLING             RANDOMEVENT_RECYCLING                  "0 0"
 
   27set_variable:  FACTOR                RANDOMEVENT_FACTOR                     1.0
 
   28set_variable:  SAMPLER               RANDOMEVENT_SAMPLER                    "1 1000"
 
   30set_variable   DAQ_TIMESLICE         JDAQTimesliceL0
 
   33    usage "$script <detector file> <detector file> <output file> <DAQ file> <PMT parameters file>"\
 
   34          "\nAuxiliary script to produce random event data."
 
   38    set_variable  DETECTORA    $1
 
   39    set_variable  DETECTORB    $2
 
   40    set_variable  OUTPUT_FILE  $3
 
   41    set_variable  DAQ_FILE     $4
 
   42    set_variable  PMT_FILE     $5
 
   44    fatal "Wrong number of arguments."
 
   47JPrintTree -f $DAQ_FILE -@ "type = JDAQSummaryslice" -k number_of_entries  |  read N
 
   49set_variable   RUNBYRUN             "file=$DAQ_FILE; sampler=${SAMPLER%% *} $(($N / 2))"
 
   51#################################################################################################
 
   53# The sampler values correspond to N_on N_off, respectively (note that sampler calls JSampler),
 
   55# N_on   =  number of time slices to read;
 
   56# N_off  =  number of time slices to skip.
 
   58# The sampler option works as follows.
 
   60# read -on average- N_on  consecutive time slices and  
 
   61# skip -on average- N_off time slices
 
   62# modulo the number of time slices in the file.
 
   64# The larger N_on, the faster the reading, because this reduces the random accesses 
 
   65# of the data taking file to pick up a next time slice.
 
   66# The smaller N_off, the less time slices are skipped.
 
   67# So, N_on = 0 guarantees that all time slices are sampled.
 
   68# Note that if the number of time slices to be produced is small, then too small a value of N_off
 
   69# could create a bias because only the first time slices of the data taking file are then sampled.
 
   70#################################################################################################
 
   72set_variable   DIR                  `mktemp -d $WORKDIR/XXXXXX`
 
   73set_variable   PIPE                 $DIR/pipe.dat
 
   74set_variable   PARAMETERS           $DIR/trigger_parameters.txt
 
   75set_variable   TRIGGER              $DIR/trigger_processor.root
 
   76set_variable   HEADER               $DIR/header.root
 
   80if [[ ! -p $PIPE ]]; then
 
   81    fatal "Error opening $PIPE."
 
   86JRandomTimesliceWriter \
 
   90    -n ${NUMBER_OF_SLICES}        \
 
  102JPrintTriggerParameters \
 
  103    -f ${DAQ_FILE}                > $PARAMETERS
 
  109    -C ${DAQ_TIMESLICE}           \
 
  124# check exit code background process
 
  130if (( $STATUS != 0 )); then
 
  131    error "JRandomTimesliceWriter exit status $STATUS"