Jpp  19.1.0
the software that should make you happy
JCalibrateTime.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 CALIBRATION_DEBUG 1
12 set_variable WORKDIR `pwd`
13 set_variable QUEUE_NAME ${TMPDIR:-/tmp}/queue
14 set_variable QUEUE_SIZE 3
15 
16 APPLICATIONS=(prefit simplex gandalf) # fit applications
17 
18 if do_usage $*; then
19  usage "$script <detector file> <string identifier> (input file)+"
20 fi
21 
22 if (( $# < 3 )); then
23  fatal "Not enough arguments."
24 fi
25 
26 set_variable DETECTOR $argv[1]
27 set_variable STRING_ID $argv[2]
28 
29 INPUT_FILES=($argv[3,-1])
30 
31 if ( ! is_CCLyon ); then
32 
33  # local batch processor
34 
35  source qlib.sh
36 
37  $JPP_DIR/examples/scripts/mkqueue.sh $QUEUE_NAME $QUEUE_SIZE continue
38 
39 else
40  fatal "The job submission should be changed for running in CC-Lyon."
41 fi
42 
43 if [[ $DETECTOR != *\.detx ]]; then
44  fatal "Invalid detector file <${DETECTOR}>."
45 fi
46 
47 # set path
48 
49 for (( i=1; i <= ${#INPUT_FILES}; i+=1 )); do
50 
51  set_variable INPUT_FILE ${INPUT_FILES[${i}]}
52 
53  if [[ -f `pwd`/$INPUT_FILE ]]; then
54  INPUT_FILES[${i}]=`pwd`/$INPUT_FILE
55  fi
56 done
57 
58 for TIME_OFFSET_NS in -40 -30 -20 -10 0 +10 +20 +30 +40; do
59  for X_OFFSET_M in 0; do
60  for Y_OFFSET_M in 0; do
61  for Z_OFFSET_M in 0; do
62 
63  set_variable OUTPUT_DIRECTORY $WORKDIR/T=${TIME_OFFSET_NS}:X=${X_OFFSET_M}:Y=${Y_OFFSET_M}:Z=${Z_OFFSET_M}
64 
65  mkdir -p -- $OUTPUT_DIRECTORY
66 
67  # detector calibration
68 
69  if [[ ! -f $OUTPUT_DIRECTORY/detector.detx ]]; then
70 
71  JEditDetector \
72  -a $DETECTOR \
73  -S "$STRING_ID add $X_OFFSET_M $Y_OFFSET_M $Z_OFFSET_M" \
74  -s "$STRING_ID add $TIME_OFFSET_NS" \
75  -o $OUTPUT_DIRECTORY/detector.detx --!
76 
77  fi
78 
79  for FILE_NAME in $INPUT_FILES[*]; do
80 
81  set_variable APP ${APPLICATIONS[-1]}
82  set_variable INPUT_FILE ${FILE_NAME}
83  set_variable OUTPUT_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/_${APP}.root}
84  set_variable BATCH_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/.sh}
85 
86  rm -f $BATCH_FILE
87 
88  echo "#!/bin/zsh" >> $BATCH_FILE
89 
90  if [[ ! -f ${OUTPUT_FILE} ]]; then
91 
92  # sequentially processing of applications
93 
94  for APP in $APPLICATIONS[*]; do
95 
96  set_variable OUTPUT_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/_${APP}.root}
97 
98  echo "JARCA${(C)APP}.sh $OUTPUT_DIRECTORY/detector.detx $INPUT_FILE $OUTPUT_FILE >& /dev/null" >> $BATCH_FILE
99 
100  set_variable INPUT_FILE ${OUTPUT_FILE}
101 
102  done
103 
104  # cleanup
105 
106  for (( i=1; i < ${#APPLICATIONS}; i+=1 )); do
107 
108  set_variable APP ${APPLICATIONS[${i}]}
109  set_variable OUTPUT_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/_${APP}.root}
110 
111  echo "rm -f $OUTPUT_FILE" >> $BATCH_FILE
112 
113  done
114 
115  echo "rm -f $BATCH_FILE" >> $BATCH_FILE
116 
117  # submit job
118 
119  chmod +x $BATCH_FILE
120  puts_queue $QUEUE_NAME $BATCH_FILE
121 
122  fi
123  done
124  done
125  done
126  done
127 done