Jpp  master_rocky-37-gf0c5bc59d
the software that should make you happy
JCalibrateOrientation.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 ROTATE_RAD in -2.8 -2.4 -2.0 -1.6 -1.2 -0.8 -0.4 0 +0.4 +0.8 +1.2 +1.6 +2.0 +2.4 +2.8; do
59 
60  set_variable OUTPUT_DIRECTORY $WORKDIR/ID=${STRING_ID}:R=${ROTATE_RAD}
61 
62  mkdir -p -- $OUTPUT_DIRECTORY
63 
64  # detector calibration
65 
66  if [[ ! -f $OUTPUT_DIRECTORY/detector.detx ]]; then
67 
68  JEditDetector \
69  -a $DETECTOR \
70  -S "$STRING_ID rot $ROTATE_RAD" \
71  -o $OUTPUT_DIRECTORY/detector.detx --!
72 
73  fi
74 
75  for FILE_NAME in $INPUT_FILES[*]; do
76 
77  set_variable APP ${APPLICATIONS[-1]}
78  set_variable INPUT_FILE ${FILE_NAME}
79  set_variable OUTPUT_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/_${APP}.root}
80  set_variable BATCH_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/.sh}
81 
82  rm -f $BATCH_FILE
83 
84  echo "#!/bin/zsh" >> $BATCH_FILE
85 
86  if [[ ! -f ${OUPUT_FILE} ]]; then
87 
88  # sequentially processing of applications
89 
90  for APP in $APPLICATIONS[*]; do
91 
92  set_variable OUTPUT_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/_${APP}.root}
93 
94  echo "JARCA${(C)APP}.sh $OUTPUT_DIRECTORY/detector.detx $INPUT_FILE $OUTPUT_FILE >& /dev/null" >> $BATCH_FILE
95 
96  set_variable INPUT_FILE ${OUTPUT_FILE}
97 
98  done
99 
100  # cleanup
101 
102  for (( i=1; i < ${#APPLICATIONS}; i+=1 )); do
103 
104  set_variable APP ${APPLICATIONS[${i}]}
105  set_variable OUTPUT_FILE ${OUTPUT_DIRECTORY}/${${FILE_NAME##*/}/\.root/_${APP}.root}
106 
107  echo "rm -f $OUTPUT_FILE" >> $BATCH_FILE
108 
109  done
110 
111  echo "rm -f $BATCH_FILE" >> $BATCH_FILE
112 
113  # submit job
114 
115  chmod +x $BATCH_FILE
116  puts_queue $QUEUE_NAME $BATCH_FILE
117 
118  fi
119  done
120 done