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: MIXED_BACKGROUND_HZ RANDOMEVENT_MIXED_BACKGROUND_HZ 8.0 6.0
25set_variable: SEED RANDOMEVENT_SEED 0
26set_variable: NUMBER_OF_SLICES RANDOMEVENT_SLICES 10
27set_variable: RECYCLING RANDOMEVENT_RECYCLING "0 0"
28set_variable: FACTOR RANDOMEVENT_FACTOR 1.0
29set_variable: SAMPLER RANDOMEVENT_SAMPLER "1 1000"
31set_variable DAQ_TIMESLICE JDAQTimesliceL0
34 usage "$script <detector file> <detector file> <output file> <DAQ file> <PMT parameters file>"\
35 "\nAuxiliary script to produce random event data."\
36 "\nThe first detector file is used to convert the true data to DAQ data and the second to covert DAQ data to calibrated data."\
37 "\nNormally, these correspond to the 'perfect' calibration and the 'online' calibration, respectively."
42 set_variable DETECTORA $1
43 set_variable DETECTORB $2
44 set_variable OUTPUT_FILE $3
45 set_variable DAQ_FILE $4
46 set_variable PMT_FILE $5
48 fatal "Wrong number of arguments."
51JPrintTree -f $DAQ_FILE -@ "type = JDAQSummaryslice" -k number_of_entries | read N
53set_variable RUNBYRUN "file=$DAQ_FILE; sampler=${SAMPLER%% *} $(($N / 2))"
55#################################################################################################
57# The sampler values correspond to N_on N_off, respectively (note that sampler calls JSampler),
59# N_on = number of time slices to read;
60# N_off = number of time slices to skip.
62# The sampler option works as follows.
64# read -on average- N_on consecutive time slices and
65# skip -on average- N_off time slices
66# modulo the number of time slices in the file.
68# The larger N_on, the faster the reading, because this reduces the random accesses
69# of the data taking file to pick up a next time slice.
70# The smaller N_off, the less time slices are skipped.
71# So, N_on = 0 guarantees that all time slices are sampled.
72# Note that if the number of time slices to be produced is small, then too small a value of N_off
73# could create a bias because only the first time slices of the data taking file are then sampled.
74#################################################################################################
76set_variable DIR `mktemp -d $WORKDIR/XXXXXX`
77set_variable PIPE $DIR/pipe.dat
78set_variable PARAMETERS $DIR/trigger_parameters.txt
79set_variable TRIGGER $DIR/trigger_processor.root
80set_variable HEADER $DIR/header.root
82eval `JPrintDetector -a $DETECTORA -O GEOMETRY`
84if (( $MINIMAL_DISTANCE_M > 15.0 )); then
85 MIXED_BACKGROUND_HZ="0.0 0.0"
90if [[ ! -p $PIPE ]]; then
91 fatal "Error opening $PIPE."
96JRandomTimesliceWriter \
100 -n ${NUMBER_OF_SLICES} \
104 -B "$BACKGROUND_HZ" \
105 -X "$MIXED_BACKGROUND_HZ" \
113JPrintTriggerParameters \
114 -f ${DAQ_FILE} > $PARAMETERS
120 -C ${DAQ_TIMESLICE} \
135# check exit code background process
141if (( $STATUS != 0 )); then
142 error "JRandomTimesliceWriter exit status $STATUS"