#!/bin/bash # HIMster script ---------------------------------------------------------------------- # part3: run simulation with new alignment constants # each misalignment consts combination used in ${nDataSamp} diff. data samples # each data sample used in a sum from 1 to ${nDataSamp} samples # each sample contains $numEv events (2e4) # ver 1.0 [16/07/2014] # author: A.Karavdina # --------------------------------------------------------------------------------------- nDataSamp=100 #nConsSamp=5 nConsSamp=3 numEv=50000 #number of events in one sample #TRANS=(0 50 100 200 300 400 500 600) #mkm #TRANS=(0 10 50 100 200 300 400 500 600 800 1000) #mkm #ROT=(0 0.2 1 3 5) #mrad TRANS=(0 10) #mkm ROT=(0 0.2) #mrad TRANSN=${#TRANS[@]} ROTN=${#ROT[@]} #----------------------------------------------------------------------------------------- verbose=0 PANDAROOT=/home/karavdin/pandaroot13 PANDAROOTmy=/home/karavdin/develop/karavdina/ # #---------------------------------------------------------------------- #pbeam=1.5 echo Enter momentum from "1.5, 4.06, 8.9, 11.91, 15 [GeV/c]": read pbeam echo "Beam mometum is: $pbeam!" momStr=`echo $pbeam | sed -e '{ s/\./_/g; }'` #pathG=/home/karavdin/datastorage/AlignmentLMDpixel/100data_10consts_SamplesStudyOct2013/BOX/mom_${momStr} pathG=/home/karavdin/datastorage/AlignmentLMDpixel/RECdataAUG2014/BOX/mom_${momStr} pathMC=/home/karavdin/datastorage/AlignmentLMDpixel/MCdataJuly2014/BOX/mom_${momStr} mkdir -p ${pathG} # if [ ! -r ${pathG}/MCsamples ]; then # mkdir ${pathG}/MCsamples # fi if [ ! -r ${pathG}/misalignConsts ]; then mkdir ${pathG}/misalignConsts fi numTrks=1 mergedHits=true #switch on "missing plane" search algorithm misspl=true #use cuts during trk seacrh with "CA". Should be 'false' if sensors missaligned! trkcut=false useMSerr=false doalign=true ##Skip kinematic filter (before back-propagation) SkipFilt=false ### if SkipFilt=false (XThetaCut or YPhiCut) or BoxCut should be true: ### X-Theta kinematic cut before back-propagation, add constant shift dX[cm] if beam is shifted XThetaCut=true dX=0. ### Y-Phi kinematic cut before back-propagation, add constant shift dY[cm] if beam is shifted YPhiCut=true dY=0. ### BOX cut before back-propagation BoxCut=false ## Clean after back-propagation (M-cut: momentum or MVA cut) CleanSig=true ## Combined filter (X&Y and M-cut) CombFilt=false ## Write all MC info in TrkQA array WrAllMC=false ############## ##ITTER=(1) ##ITTERN=${#ITTER[@]} ### pick up half solenoid maps for 1.5 GeV/c [tmp, should be removed one day!] ### source /home/karavdin/pandaroot13/buildPanda/config.sh # solsw=3 #GeV, switch between half and full solenoid: below half of solenoid # if [[ $(echo "if (${pbeam} > ${solsw}) 1 else 0" | bc) -eq 1 ]]; then # echo "FULL solenoid field maps" # ln -sf ${VMCWORKDIR}/input/solenoid_fc/* ${VMCWORKDIR}/input/. # else # echo "HALF solenoid field maps" # ln -sf ${VMCWORKDIR}/input/solenoid_hc/* ${VMCWORKDIR}/input/. # fi # ###################################################### for (( jr=0;jr<$ROTN;jr++)); do for (( jt=0;jt<$TRANSN;jt++)); do dr=${TRANS[${jt}]} da=${ROT[${jr}]} daStr=`echo $da | sed -e '{ s/\./_/g; }'` for(( js=0;js<${nConsSamp};js++));do #samples with diff Delta_x, Delta_al in the same scale pathDxDa=${pathG}/${dr}mkm_${daStr}mrad/ConstSample${js} if [ ! -r ${pathDxDa} ]; then echo "Beam path ${pathDxDa} doesn't exist!" fi for jsn in `seq 0 ${step} $(( ${nDataSamp} - 1))`; do path_res=${pathDxDa}/RECsum$((${jsn}+1))DataSamples/ if [ ! -r ${path_res} ]; then echo "Beam path ${path_res} doesn't exist!" fi for jn in `seq 0 ${step} $(( ${nDataSamp} - 1))`; do path=${path_res}/RECalignDataSample${jn}/ mkdir -p ${path} pathMC_sample=${pathMC}/Sample${jn}/ path_loc=/local/scratch/karavdina/${dr}mkm_${daStr}mrad/${js}Sum$((${jsn}+1))Samples_Sample${jn}/ if [ ! -d jobs/align/mom_${momStr}/ ]; then mkdir -p jobs/align/mom_${momStr}/ fi cat >jobs/align/mom_${momStr}/job_${dr}mkm_${daStr}mrad_${js}Sum${jsn}_samp${jn}.sh < "Follow" if you want to use Trk-Following as trk-search algorithm ### NB: CA can use merged or single(not merged) hits, Trk-Following can't root -l -b -q runLumiPixel3Finder.C\(${numEv},0,"\"${path_loc}\"",0,"\"CA\"",${misspl},${mergedHits},${trkcut},${pbeam}\) #track fit: ### Possible options: "Minuit", "KalmanGeane", "KalmanRK" root -l -b -q runLumiPixel4Fitter.C\(${numEv},0,"\"${path_loc}\"",0,"\"Minuit\"",${mergedHits}\) #track filter (on number of hits and chi2) root -l -b -q runLumiPixel4aFilter.C\(${numEv},0,"\"${path_loc}\"",0,${mergedHits},${SkipFilt},${XThetaCut},${YPhiCut},${BoxCut},${dX},${dY}\) #save filtered results as standart Track array mv ${path_loc}/Lumi_Track_0.root ${path_loc}/Lumi_TrackNotFiltered_0.root cp ${path_loc}/Lumi_TrackFiltered_0.root ${path_loc}/Lumi_Track_0.root #back-propgation GEANE ### Possible options: "Geane", "RK" root -l -b -q runLumiPixel5BackProp.C\(${numEv},0,"\"${path_loc}\"",0,"\"Geane\"",${mergedHits},${pbeam}\) #clean signal from background (momentum cut or MVA cut) if [ $CleanSig == "true" ]; then root -l -b -q runLumiPixel5bCleanSig.C\(${numEv},0,"\"${path_loc}\"",0,${pbeam},${dX},${dY}\) fi #combined filter (X&Y and M cuts) if [ $CombFilt == "true" ]; then root -l -b -q runLumiPixel5cCombFilt.C\(${numEv},0,"\"${path_loc}\"",0,${pbeam},${dX},${dY}\) fi # # Quality assurance task(s) if [ $CombFilt == "true" ]; then root -l -b -q runLumiPixel7QA.C\(${numEv},0,"\"${path_loc}\"",0,${pbeam},${CombFilt}\) else root -l -b -q runLumiPixel7QA.C\(${numEv},0,"\"${path_loc}\"",0,${pbeam},${CleanSig}\) fi if [ $CombFilt == "true" ]; then root -l -b -q runLumiPixel7TrksQA.C\(${numEv},0,"\"${path_loc}\"",0,${pbeam},${WrAllMC},${CombFilt}\) else root -l -b -q runLumiPixel7TrksQA.C\(${numEv},0,"\"${path_loc}\"",0,${pbeam},${WrAllMC},${CleanSig}\) fi mv ${path_loc}/Lumi_QA_0.root ${path_loc}/Lumi_QA_after.root ### And now give some work to Millipede cd ${VMCWORKDIR}/buildPanda/bin ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 0 -out ${path_loc}/hits_trk_for_alignment_sector0.txt -outhist ${path_loc}/hitsRes_after_alignment_sector0.root &> ${path_loc}/logCreatAlignSampl0 ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 1 -out ${path_loc}/hits_trk_for_alignment_sector1.txt -outhist ${path_loc}/hitsRes_after_alignment_sector1.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 2 -out ${path_loc}/hits_trk_for_alignment_sector2.txt -outhist ${path_loc}/hitsRes_after_alignment_sector2.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 3 -out ${path_loc}/hits_trk_for_alignment_sector3.txt -outhist ${path_loc}/hitsRes_after_alignment_sector3.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 4 -out ${path_loc}/hits_trk_for_alignment_sector4.txt -outhist ${path_loc}/hitsRes_after_alignment_sector4.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 5 -out ${path_loc}/hits_trk_for_alignment_sector5.txt -outhist ${path_loc}/hitsRes_after_alignment_sector5.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 6 -out ${path_loc}/hits_trk_for_alignment_sector6.txt -outhist ${path_loc}/hitsRes_after_alignment_sector6.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 7 -out ${path_loc}/hits_trk_for_alignment_sector7.txt -outhist ${path_loc}/hitsRes_after_alignment_sector7.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 8 -out ${path_loc}/hits_trk_for_alignment_sector8.txt -outhist ${path_loc}/hitsRes_after_alignment_sector8.root ./hits_align_pixel -s 0 -n ${numEv} -path ${path_loc} -m 9 -out ${path_loc}/hits_trk_for_alignment_sector9.txt -outhist ${path_loc}/hitsRes_after_alignment_sector9.root ##cp ${path_loc}/* ${path}/. mv ${path_loc}/hitsRes_after* ${path}/. mv ${path_loc}/Lumi_QA_after.root ${path}/. rm -r ${path_loc} echo "Time of end: `date` " exit 0 EOF # echo "Output files will be saved in $path_res" ### submit job to batch system iter=0 while [ $iter -lt 1 ];do qsub jobs/align/mom_${momStr}/job_${dr}mkm_${daStr}mrad_${js}Sum${jsn}_samp${jn}.sh done_test=$(echo $?) if [ "$done_test" -eq "0" ];then echo "Output files will be saved in $path" iter=1 else echo "qsub did not work sleep for 60 seconds and then try again." sleep 60 fi done done done done done done