SOLARIS_Analysis/Cleopatra/Cleopatra.sh

206 lines
6.2 KiB
Bash
Executable File

#!/bin/bash
########################################################################
#
# This is Cleopatra.sh, a scripted version for Cleopatra
#
# Using bash script provide flexibility that user can add difference
# compoenents during the calculation
#
# A full package includes fellowing:
# 1) create a in-file for ptolemy
# 2) run ptolemy from that in-file and output an out-file
# 3) extract cross-section distribution from the out-file
# save as txt or root TGraph format
# 4) call ROOT to draw the TGraph
# 5) load possible experimental Xsec and fit with Ptolemy calulation
#
# User can easily select/comment-out different component
# to suit their needs
#-------------------------------------------------------
# created by Ryan (Tsz Leung) Tang, Nov-18, 2018
# email: goluckyryan@gmail.com
########################################################################
#===== Call thisroot.h
ROOTPATH=$(which root)
len=${#ROOTPATH}
ROOTSOURCE=${ROOTPATH:0:$len-4}"thisroot.sh"
echo $ROOTSOURCE
source $ROOTSOURCE
#===== go to Cleopatra and make
cd ../Cleopatra
make
cd ../working
#================================ User Defualt Control
CreateInFile=0 # 0 = false, 1 = true
RunPtolemy=0
IsExtractXSec=0
PlotResult=0
SimTransfer=0
#============================================ USER don't need to change thing below
if [ $# -eq 0 ] ; then
echo "$./Cleopatra in-file X X X X X angMin angMax angStep"
echo " | | | | |"
echo " | | | | Simulate Transfer reaction? (1/0)"
echo " | | | |"
echo " | | | PlotResult? (1/0)"
echo " | | Extract cross-section? (2/1/0)"
echo " | | if 1 = extract Ratio to Rutherford for (d,d), (p,p)"
echo " | | if 2 = extract total Xsec for (d,d), (p,p), (n,n)"
echo " | | if 3 = extract Rutherford"
echo " | Run Ptolemy? (1/0)"
echo " Create infile? (1/0)"
echo "default angMin = 0, angMax = 50, angStep = 0.5"
exit 1
fi;
loadfile=$1
infile=$1".in"
outfile=$1".out"
rootfile=$1".root"
exFile=$1".Ex.txt"
if [ $# -eq 2 ]; then
CreateInFile=$2
fi;
if [ $# -eq 3 ]; then
CreateInFile=$2
RunPtolemy=$3
fi;
if [ $# -eq 4 ]; then
CreateInFile=$2
RunPtolemy=$3
IsExtractXSec=$4
fi;
if [ $# -eq 5 ]; then
CreateInFile=$2
RunPtolemy=$3
IsExtractXSec=$4
PlotResult=$5
fi;
if [ $# -eq 6 ]; then
CreateInFile=$2
RunPtolemy=$3
IsExtractXSec=$4
PlotResult=$5
SimTransfer=$6
fi;
if [ $# -eq 9 ]; then
CreateInFile=$2
RunPtolemy=$3
IsExtractXSec=$4
PlotResult=$5
SimTransfer=$6
angMin=$7
angMax=$8
angStep=$9
fi;
ExtractXsecMsg=""
if [ $IsExtractXSec -eq 1 ]; then
ExtractXsecMsg=", for (d,d)(p,p), extract Ratio to Rutherford"
elif [ $IsExtractXSec -eq 2 ]; then
ExtractXsecMsg=", for (d,d)(p,p), extract Total Xsec"
fi;
if [ $SimTransfer -eq 1 ]; then
angMin=0
angMax=180
angStep=0.5
fi
echo "#################################################################"
echo "## @@@@ @@ @@@@ @@@@ @@@@@ @@@@ @@@@@@ @@@@@ @@@@ ##"
echo "## @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ ##"
echo "## @@ @@ @@@@ @@ @@ @@@@@ @@@@@@ @@ @@@@@ @@@@@@ ##"
echo "## @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@ ##"
echo "## @@@@ @@@@@ @@@@ @@@@ @@ @@ @@ @@ @@ @ @@ @@ ##"
echo "#################################################################"
echo "##### Cleopatra, Ptolemy for p,d,t,3He, a #####"
echo "#################################################################"
echo "Supported reactions:"
echo "elastics/inelastics : (p,p), (d,d)"
echo "1-neutron adding : (d,p), (t,d) | (a,3He)?"
echo "1-proton adding : (3He,d)"
echo "2-neutrons adding : (t,p)"
echo "1-neutron removal : (p,d), (d,t) "
echo "1-proton removal : (d,3He), (t,a)"
echo "================================================================="
echo "USER OPTION:"
echo " --- Is Create Ptolemy infile ? " ${CreateInFile}
echo " --- Is Run Ptolemy ? " ${RunPtolemy}
echo " --- Is Extract Cross-Section ? " ${IsExtractXSec} ${ExtractXsecMsg}
echo " --- Is Plot Results ? " ${PlotResult}
echo " ----Is Simulation Transfer ? " ${SimTransfer}
echo "================================================================="
#if [ ${CreateInFile} -eq 1 ] ; then
# echo "infile ----> "${loadfile}
#fi;
#
#if [ ${RunPtolemy} -eq 1 ] ; then
# echo "Ptolemy infile ----> "${infile}
# echo "Ptolemy outfile ----> "${outfile}
#fi;
if [ ${CreateInFile} -eq 1 ] ; then
if [ $# -eq 9 ]; then
../Cleopatra/InFileCreator ${loadfile} $angMin $angMax $angStep
else
../Cleopatra/InFileCreator ${loadfile} 0.0 50.0 0.5
fi
fi;
if [ ${RunPtolemy} -eq 1 ] ; then
echo "================================================================="
echo "===== Ptolemy Calcualtion ==================================="
echo "================================================================="
#check is linux or Mac
arch=$(uname)
if [ ${arch} == "Darwin" ] ; then
../Cleopatra/ptolemy_mac <${infile}> ${outfile}
ptolemyOUTPUT=$?
else
../Cleopatra/ptolemy <${infile}> ${outfile}
ptolemyOUTPUT=$?
fi
echo "ptolmey exit code : " $ptolemyOUTPUT
if [ ${ptolemyOUTPUT} -eq 0 ] ; then
echo "Ptolmey finished without problem. "
else
echo "Ptolemy has error, check ${infile} or ${outfile}"
exit 1;
fi
fi;
#===== Extracting XSec and save into *txt and *root
if [ ${IsExtractXSec} -ge 1 ] ; then
../Cleopatra/ExtractXSec ${outfile} ${IsExtractXSec}
fi;
if [ ${PlotResult} -eq 1 ] ; then
#===== Plot the result from the *.root
#./PlotTGraphTObjArray ${rootfile}
#--- other way within ROOT
echo "================================================================="
echo "===== Plot Result from ${rootfile}"
echo "================================================================="
com='../Cleopatra/PlotTGraphTObjArray.h("'${rootfile}'")'
echo ${com}
root -l ${com}
fi;
if [ ${SimTransfer} -eq 1 ] ; then
../Cleopatra/Transfer reactionConfig.txt detectorGeo.txt ${exFile} ${rootfile} transfer.root reaction.dat
fi;