#!/bin/bash DIR=$(pwd) TIMEWINDOW=100 Method=1 #1 : evt -> evt.to -> root , 2 : evt -> _raw.root -> root if [ $Method -eq 1 ]; then DATA_DIR=. else DATA_DIR=data fi if [ $# -eq 0 ] || [ $1 == "-help" ]; then echo "$./process_run [RunFile] [Merge] [BuildEvents] [Analysis]" echo " Run Folder = the name of run folder" echo " Merge = 1/0/-1 || 1 = merge, 0 = not merge, -1 = force merge " echo " BuildEvents = 1/0/-1 || if |x| > 1, take last x %, e.g. 10, last 10 %" echo " Analysis = 1/0/-1 || " echo "" if [ $Method -eq 1 ]; then ls -l --color $DATA_DIR/data/ fi exit 1 fi; RunFile=$1 RunFolder=$1 isMerge=1 if [ $# -gt 1 ]; then isMerge=$2; fi isBuildEvents=1 if [ $# -gt 2 ]; then isBuildEvents=$3; fi isAnalysis=1 if [ $# -gt 3 ]; then isAnalysis=$4; fi RED='\033[1;31m' YELLOW='\033[1;33m' ORANGE='\033[0;33m' GREEN='\033[1;32m' BLUE='\033[0;34m' Cyan='\033[0;36m' NC='\033[0m' ################################### method 1 evt -> evt.to -> root if [ $Method -eq 1 ]; then if [ -f $RunFile ]; then echo -e "found evt files. "${RunFile} else echo -e "!!!!! cannot found evt files ${RunFile}. Abort." exit fi pos=`expr index "${RunFile}" /` temp=${RunFile:pos} pos=`expr index "${temp}" /` toFile=${temp:pos}".to" pos=`expr index "${toFile}" .` pos=$((pos-1)) if [ ${isBuildEvents} -gt 1 ]; then rootFile=${toFile:0:pos}"_${isBuildEvents}.root" else rootFile=${toFile:0:pos}".root" fi #echo ${RunFile} #echo ${toFile} #echo ${rootFile} echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Time sort evt to evt.to $NC" if [ $isMerge -eq 1 ]; then if [ -f ${toFile} ]; then #_raw.root exist #check evt DateTime evtDateTime=`stat -c "%Z" ${RunFile} | sort -rn | head -1` toDateTime=`stat -c "%Z" ${toFile} | sort -rn | head -1` if [ $evtDateTime -gt $toDateTime ]; then #if evt file is newer ./armory/pxi-time-order ${RunFile} echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Time sort finished$NC" else echo "there is no newer evt files" fi else ./armory/pxi-time-order ${RunFile} echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Time sort finished$NC" fi fi if [ $isMerge -eq 0 ]; then echo -e "$YELLOW skipped by user $NC" fi if [ $isMerge -eq -1 ]; then echo -e "$YELLOW forced by user $NC" ./armory/pxi-time-order ${RunFile} echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Time sort finished$NC" fi echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Build Events $NC" if [ ${isBuildEvents} -eq 1 ]; then if [ -f ${rootFile} ]; then # root exist toDateTime=`stat -c "%Z" ${toFile} | sort -rn | head -1` rootDateTime=`stat -c "%Z" ${rootFile} | sort -rn | head -1` if [ ${toDateTime} -gt ${rootDateTime} ]; then ./armory/to2root ${toFile} $TIMEWINDOW echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Build Events finsihed.$NC" else echo -e "${rootFile} is up-to-date." fi else ./armory/to2root ${toFile} $TIMEWINDOW echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Build Events finsihed.$NC" fi fi if [ ${isBuildEvents} -eq 0 ]; then echo -e "$YELLOW skipped by user $NC" fi if [ ${isBuildEvents} -le -1 ] || [ ${isBuildEvents} -gt 1 ]; then echo -e "$YELLOW forced by user $NC" if [ ${isBuildEvents} -lt 1 ] || [ ${isBuildEvents} -gt 1 ]; then ./armory/to2root ${toFile} $TIMEWINDOW ${isBuildEvents} ${rootFile} else ./armory/to2root ${toFile} $TIMEWINDOW fi echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Build Events finsihed.$NC" fi echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Analysis $NC" if [ ${isAnalysis} -eq 1 ]; then root -l "process_run.c(\"${rootFile}\")" fi if [ ${isAnalysis} -eq 0 ]; then echo -e "$YELLOW skipped by user $NC" fi if [ ${isAnalysis} -eq -1 ]; then echo -e "$YELLOW forced by user $NC" root -l "process_run.c(\"${rootFile}\")" fi fi ################################### method 2 evt -> _raw.root -> root if [ $Method -eq 2 ]; then if [ -f $DATA_DIR/$RunFolder/*.evt ]; then echo -e "found evt files." else echo -e "cannot found any evt files in $DATA_DIR/$RunFolder/. Abort." exit fi echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Merge evt files to ${RunFolder}_raw.root $NC" if [ $isMerge -eq 1 ]; then # check is ${RunFolder}"_raw.root" exist if [ -f ${RunFolder}_raw.root ]; then #_raw.root exist #check evt DateTime evtDateTime=`stat -c "%Z" $DATA_DIR/$RunFolder/*.evt | sort -rn | head -1` rawRootDateTime=`stat -c "%Z" ${RunFolder}"_raw.root" | sort -rn | head -1` if [ $evtDateTime -gt $rawRootDateTime ]; then #if evt file is newer ./armory/MergeEVT ${RunFolder}"_raw.root" `ls ${DATA_DIR}/${RunFolder}/*.evt` else echo "there is no newer evt files" fi else ./armory/MergeEVT ${RunFolder}"_raw.root" `ls ${DATA_DIR}/${RunFolder}/*.evt` fi fi if [ $isMerge -eq 0 ]; then echo -e "$YELLOW skipped by user $NC" fi if [ $isMerge -eq -1 ]; then echo -e "$YELLOW forced by user $NC" ./armory/MergeEVT ${RunFolder}"_raw.root" `ls ${DATA_DIR}/${RunFolder}/*.evt` fi echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Merge finished$NC" echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Build Events$NC" if [ ${isBuildEvents} -eq 1 ]; then if [ -f ${RunFolder}.root ]; then # root exist rawRootDateTime=`stat -c "%Z" ${RunFolder}"_raw.root" | sort -rn | head -1` rootDateTime=`stat -c "%Z" ${RunFolder}".root" | sort -rn | head -1` if [ ${rawRootDateTime} -gt ${rootDateTime} ]; then ./armory/EventBuilder ${RunFolder}"_raw.root" $TIMEWINDOW else echo -e "${RunFolder}.root is up-to-date." fi else ./armory/EventBuilder ${RunFolder}"_raw.root" $TIMEWINDOW fi fi if [ ${isBuildEvents} -eq 0 ]; then echo -e "$YELLOW skipped by user $NC" fi if [ ${isBuildEvents} -eq -1 ]; then echo -e "$YELLOW forced by user $NC" ./armory/EventBuilder ${RunFolder}"_raw.root" $TIMEWINDOW fi echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Build Events finsihed.$NC" echo -e "$RED>>> `date` >>>>>>>>>>>>>>>>>>>>>>> Analysis $NC" if [ ${isAnalysis} -eq 1 ]; then root -l "process_run.c(\"${RunFolder}.root\")" fi if [ ${isAnalysis} -eq 0 ]; then echo -e "$YELLOW skipped by user $NC" fi if [ ${isAnalysis} -eq -1 ]; then echo -e "$YELLOW forced by user $NC" root -l "process_run.c(\"${RunFolder}.root\")" fi fi