Jpp
JPreCalibrateTime.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 script=${0##*/}
3 
4 if [ -z $JPP_DIR ]; then
5  echo "Variable JPP_DIR undefined."
6  exit
7 fi
8 
9 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
10 
11 set_variable DEBUG ${CALIBRATE_DEBUG:-1}
12 set_variable WORKDIR `pwd`
13 set_variable QUEUE_NAME /tmp/queue
14 set_variable QUEUE_SIZE 3
15 
16 APPLICATIONS=(JTriggerProcessor) # applications
17 
18 if ( do_usage $* ); then
19  usage "$script <detector file> <string identifier> <trigger parameters> <daq type> (input file)+"
20 fi
21 
22 if (( $# < 5 )); then
23  fatal "Not enough arguments."
24 fi
25 
26 set_variable DETECTOR $argv[1]
27 set_variable STRING_ID $argv[2]
28 set_variable TRIGGER_PARAMETERS $argv[3]
29 set_variable JDAQ_TYPE $argv[4]
30 
31 INPUT_FILES=($argv[5,-1])
32 
33 if ( ! is_CCLyon ); then
34 
35  # local batch processor
36 
37  source qlib.sh
38 
39  $JPP_DIR/examples/scripts/mkqueue.sh $QUEUE_NAME $QUEUE_SIZE continue
40 
41 else
42  fatal "The job submission should be changed for running in CC-Lyon."
43 fi
44 
45 if [[ $DETECTOR != *\.detx ]]; then
46  fatal "Invalid detector file <${DETECTOR}>."
47 fi
48 
49 # set path
50 
51 for (( i=1; i <= ${#INPUT_FILES}; i+=1 )); do
52 
53  set_variable INPUT_FILE ${INPUT_FILES[${i}]}
54 
55  if [[ -f `pwd`/$INPUT_FILE ]]; then
56  INPUT_FILES[${i}]=`pwd`/$INPUT_FILE
57  fi
58 done
59 
60 for TIME_OFFSET_NS in -500 -400 -300 -200 -100 0 +100 +200 +300 +400 +500 +600; do
61  for X_OFFSET_M in 0; do
62  for Y_OFFSET_M in 0; do
63  for Z_OFFSET_M in 0; do
64 
65  set_variable OUTPUT_DIRECTORY $WORKDIR/T=${TIME_OFFSET_NS}:X=${X_OFFSET_M}:Y=${Y_OFFSET_M}:Z=${Z_OFFSET_M}
66 
67  mkdir -p -- $OUTPUT_DIRECTORY
68 
69  # detector calibration
70 
71  if [[ ! -f $OUTPUT_DIRECTORY/detector.detx ]]; then
72 
73  JEditDetector \
74  -a $DETECTOR \
75  -S "$STRING_ID add $X_OFFSET_M $Y_OFFSET_M $Z_OFFSET_M" \
76  -S "$STRING_ID add $TIME_OFFSET_NS" \
77  -o $OUTPUT_DIRECTORY/detector.detx --!
78 
79  fi
80 
81  for FILE_NAME in $INPUT_FILES[*]; do
82 
83  set_variable APP ${APPLICATIONS[-1]}
84  set_variable INPUT_FILE ${FILE_NAME}
85  set_variable OUTPUT_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/_${APP}.root}
86  set_variable BATCH_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/.sh}
87 
88  rm -f $BATCH_FILE
89 
90  if [[ ! -f ${OUPUT_FILE} ]]; then
91 
92  # Processing of application
93 
94  echo "JTriggerProcessor -a $OUTPUT_DIRECTORY/detector.detx -f ${INPUT_FILE} -C ${JDAQ_TYPE} -@ ${TRIGGER_PARAMETERS} -o ${OUTPUT_FILE} > /dev/null 2>&1 &" >> $BATCH_FILE
95 
96  echo "rm -f $BATCH_FILE" >> $BATCH_FILE
97 
98  # submit job
99 
100  chmod +x $BATCH_FILE
101  puts_queue $QUEUE_NAME $BATCH_FILE
102 
103  fi
104  done
105  done
106  done
107  done
108 done