Skip to content
Snippets Groups Projects
Commit 8883d1cd authored by Norbert Herrmann's avatar Norbert Herrmann Committed by Florian Uhlig
Browse files

add cosmic calibration scripts

parent 0d182138
No related branches found
No related tags found
1 merge request!138Final merge
#!/bin/bash
#SBATCH -J calib
#SBATCH -D /lustre/nyx/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
#SBATCH --time=6-00:00:00
#SBATCH --mem=4000
#SBATCH --partition=long
X=$((${SLURM_ARRAY_TASK_ID} - 0))
XXX=$(printf "%03d" "$X")
CalSet="$1"
if [[ ${CalSet} = "" ]]; then
echo please specify CalSet!
return
fi
Sel2="$2"
if [[ ${Sel2} = "" ]]; then
echo please specify Sel2!
return
fi
RunId="$3"
if [[ ${RunId} = "" ]]; then
RunList1='
20161121_2133_run1_gdpb
'
I=1
RunId=""
for RunId in $RunList1
do
#echo check $RunId
if (($I == $X)); then
echo found RunId $RunId
break
fi
((I=$I+1))
done
fi
CalMode="$4"
if [[ ${CalMode} = "" ]]; then
#CalMode="_DT200_0x00005006"
#CalMode="_DT50_0x00005006"
#CalMode="_DT50_0x00000000"
#CalMode="_DT50_0x00019026"
#CalMode="_DT50_Req5"
#CalMode="_DT50_Req0"
#CalMode="_DT50000_Req-3"
#CalMode="_DT50000_Req-4"
#CalMode="_DT26000_Req-4"
CalMode=".100.3"
#CalMode="_DT100_Req-4"
#CalMode="_DT50_Req-3"
#CalMode="_DT50_Req-2"
fi
RunIdMode=`echo $RunId$CalMode`
Deadtime=50
echo define root execution environment at I=$I for Run $RunId Mode $RunIdMode
if [ -e /lustre/nyx ]; then
source /lustre/nyx/cbm/users/nh/CBM/cbmroot/trunk/build/config.sh
wdir=/lustre/nyx/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
outdir=/lustre/nyx/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020/${RunId}
else
wdir=`pwd`
outdir=${wdir}/${RunId}
fi
mkdir ${outdir}
cd ${wdir}
echo execute: ./init_calib.sh ${RunIdMode} ${CalSet} ${Deadtime}
source ./init_calib.sh ${RunIdMode} ${CalSet} ${Deadtime}
cd ${wdir}
#echo execute: ./iter_calib.sh ${RunIdMode} ${CalSet} ${Sel2} ${Deadtime}
#source ./iter_calib.sh ${RunIdMode} ${CalSet} ${Sel2} ${Deadtime}
cd ${wdir}
echo execute: ./gen_digi.sh ${RunIdMode} ${CalSet} ${Sel2} ${Deadtime}
source ./gen_digi.sh ${RunIdMode} ${CalSet} ${Sel2} ${Deadtime}
mv -v slurm-${SLURM_ARRAY_JOB_ID}_${SLURM_ARRAY_TASK_ID}.out ${outdir}/Calib_${RunIdMode}_${CalSet}_${Sel2}.out
#!/bin/bash
# shell script to iterate tracklet calibration histograms
#SBATCH -J eval_tracks
#SBATCH -D /lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
#SBATCH --time=1-00:00:00
#SBATCH --mem=2000
#SBATCH --partition=long
X=$((${SLURM_ARRAY_TASK_ID} - 0))
XXX=$(printf "%03d" "$X")
cRun=$1
iDut=$2;
iRef=$3;
iSel2=$4
((iSel=$iDut*1000+$iRef))
iTraSetup=$5
cSet=$6
if [[ ${cSet} = "" ]]; then
cSet="900920910_911"
fi
CalIdMode=$7
if [[ ${CalIdMode} = "" ]]; then
echo use native calibration file
cCalId=$cRun;
else
cCalId=${CalIdMode}
fi
dDTres=10000000
nEvt=100000
cSel2=$iSel2;
if [[ $iSel2 < 100 ]]; then
cSel2="0"$iSel2
if [[ $iSel2 < 10 ]]; then
cSel2="00"$iSel2
fi
fi
if [ -e /lustre/cbm ]; then
source /lustre/cbm/users/nh/CBM/cbmroot/trunk/build/config.sh
wdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
outdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020/${cRun}
else
wdir=`pwd`
outdir=${wdir}/${cRun}
fi
# frange2 limits chi2
fRange2=3.5
#frange1 limits DT spectrum range
fRange1=1.1
dDeadtime=50
cd ${cRun}
mkdir Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup}
cp ../rootlogon.C Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup}/
cp ../.rootrc Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup}/
cd Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup}
rm -v *AnaTestBeam.hst.root
cp -v ../../${cCalId}_tofFindTracks.hst.root .
cSet9=${cSet:0:9}
ln -s -v ../${cCalId}_set${cSet9}_93_1tofClust.hst.root ${cCalId}_set${cSet9}_93_1tofClust.hst.root
while [[ $dDTres > 0 ]]; do
for iCal in 1 2 3 5 6 7 8 1
do
root -b -q '../../ana_trks.C('$nEvt','$iSel',-1,"'$cRun'","'$cSet'",'$iSel2','$iTraSetup','$fRange1','$fRange2','$dDeadtime',"'$cCalId'",'$iCal')'
mv -v tofAnaTestBeam.hst.root ${cRun}_TrkAnaTestBeam.hst.root
rm all_*
if (! (test -f Test.res)); then
echo no resolution file available: return
exit 1
fi
done
Tres=`cat Test.res`
dTdif=`echo "$dDTres - $Tres" | bc`
dDTres=`echo "$dDTres - 0.005" | bc`
compare_result=`echo "$Tres < $dDTres" | bc`
echo got Tres = $Tres, compare to $dDTres, dTdif = $dTdif, compare_result = $compare_result
if [[ $compare_result > 0 ]]; then
dDTres=$Tres
else
dDTres=0
fi
done
# final action -> scan full statistics
iCal=1
root -b -q '../../ana_trks.C(-1,'$iSel',-1,"'$cRun'","'$cSet'",'$iSel2','$iTraSetup','$fRange1','$fRange2','$dDeadtime',"'$cCalId'",'$iCal')'
rm all_*
cd ../..
#mv -v slurm-${SLURM_ARRAY_JOB_ID}_${SLURM_ARRAY_TASK_ID}.out ${outdir}/IterTrack_${cRun}_${cSet}.out
mv -v slurm-${SLURM_JOB_ID}.out ${outdir}/EvalTrack_${cRun}_${cSet}_${iSel}_${iSel2}_${iTraSetup}.out
#!/bin/bash
# shell script to apply clusterizer calibrations
#SBATCH -J gen_digi
#SBATCH -D /lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
#SBATCH --time=4:00:00
#SBATCH --mem=2000
##SBATCH --partition=long
cRun=$1
iCalSet=$2
((iTmp = $iCalSet ))
((iBRef = $iTmp % 1000))
((iTmp = $iTmp - $iBRef))
((iSet = $iTmp / 1000))
((iRef = $iTmp % 1000000))
((iRef = $iRef / 1000))
((iTmp = $iTmp - $iRef))
((iDut = $iTmp / 1000000))
iSel2=$3
if((${iSel2}<0));then
((iBRef=-$iSel2))
fi
cCalSet=$iCalSet
if (( iCalSet<100000000 )); then
cCalSet="0"$iCalSet
fi
if (( iCalSet<10000000 )); then
cCalSet="00"$iCalSet
fi
if (( iCalSet<1000000 )); then
cCalSet="000"$iCalSet
fi
if (( iCalSet<100000 )); then
cCalSet="0000"$iCalSet
fi
echo cCalSet = $cCalSet
Deadtime=$4
if [[ ${Deadtime} = "" ]]; then
Deadtime=50.
fi
CalIdMode=$5
if [[ ${CalIdMode} = "" ]]; then
echo use native calibration file
CalIdMode=${cRun}
CalFile=${cRun}_set${cCalSet}_93_1tofClust.hst.root
else
CalFile=${CalIdMode}_set${cCalSet}_93_1tofClust.hst.root
RunFile=${cRun}_set${cCalSet}_93_1tofClust.hst.root
# rm ${RunFile}
# ln -s ${CalFile} ${RunFile}
echo use calibrations from ${CalFile}
fi
CalIdSet=$6
if [[ ${CalIdSet} = "" ]]; then
echo use native calibration file
CalIdSet=$cCalSet
else
CalFile=${CalIdMode}_set${CalIdSet}_93_1tofClust.hst.root
fi
echo gen_digi for $cRun with iDut=$iDut, iRef=$iRef, iSet=$iCalSet, iSel2=$iSel2, iBRef=$iBRef, Deadtime=$Deadtime, CalFile=$CalFile
if [ -e /lustre/cbm ]; then
source /lustre/cbm/users/nh/CBM/cbmroot/trunk/build/config.sh
wdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/mcbm2019
outdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/mcbm2019/${cRun}
else
wdir=`pwd`
outdir=${wdir}/${cRun}
fi
cd $wdir
mkdir $cRun
cd $cRun
cp ../.rootrc .
cp ../rootlogon.C .
cp -v ../${CalFile} .
#root -b -q './ana_digi.C(-1,93,1,'$iRef',1,"'$cRun'",'$iCalSet',1,'$iSel2','$Deadtime') '
#root -b -q '../ana_digi_dev.C(-1,93,1,'$iRef',1,"'$cRun'",'$iCalSet',1,'$iSel2','$Deadtime',"'$CalIdMode'") '
root -b -q '../ana_digi_cal.C(-1,93,1,'$iRef',1,"'$cRun'",'$iCalSet',1,'$iSel2','$Deadtime',"'$CalIdMode'") '
#root -b -q '../ana_digi_cos.C(-1,93,1,'$iRef',1,"'$cRun'",'$iCalSet',1,'$iSel2','$Deadtime',"'$CalIdMode'") '
#root -b -q '../ana_digi_star.C(-1,93,1,'$iRef',1,"'$cRun'",'$iCalSet',1,'$iSel2','$Deadtime',"'$CalIdMode'") '
cd ..
mv -v slurm-${SLURM_JOB_ID}.out ${outdir}/GenDigi_${cRun}_${iCalSet}_${iSel2}_${iCalIdMode}.out
#!/bin/bash
# shell script to initialize clusterizer calibrations
#SBATCH -J calall
#SBATCH -D /lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
#SBATCH --time=6-00:00:00
#SBATCH --mem=2000
#SBATCH --partition=long
cRun=$1
echo 'Initialize clusterizer calibration for run '$cRun
iCalSet=$2
((iTmp = $iCalSet ))
((iBRef = $iTmp % 1000))
((iTmp = $iTmp - $iBRef))
((iSet = $iTmp / 1000))
((iMRef = $iTmp % 1000000))
((iMRef = $iMRef / 1000))
((iTmp = $iTmp - $iMRef))
((iDut = $iTmp / 1000000))
echo Calib setup is ${iCalSet}, iSet=$iSet, iDut=$iDut, iMRef=$iMRef, iBRef=$iBRef
cCalSet=$iCalSet
if (( iCalSet<100000000 )); then
cCalSet="0"$iCalSet
fi
if (( iCalSet<10000000 )); then
cCalSet="00"$iCalSet
fi
if (( iCalSet<1000000 )); then
cCalSet="000"$iCalSet
fi
if (( iCalSet<100000 )); then
cCalSet="0000"$iCalSet
fi
echo cCalSet = $cCalSet
#iSet=0
#lastOpt=''
nEvi0=100000 # start value
nEvi1=10000 # increment
if [ -e /lustre ]; then
source /lustre/cbm/users/nh/CBM/cbmroot/trunk/build6/config.sh
wdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
outdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020/${RunId}
else
wdir=`pwd`
outdir=${wdir}/${RunId}
fi
mkdir ${outdir}
cd ${wdir}
mkdir ${cRun}
cp rootlogon.C ${cRun}
cp .rootrc ${cRun}
cd ${cRun}
# Global variables, for for-loops
iRestart=0
#iRestart=12
iStep=0
iStepLast=0
iCalSel0=0
iCalSel1=1
# ************************** Starting while Loop ***************************** #
(( nEvi = nEvi0 + 10*nEvi1 ))
optList=""
optList=`echo " $nEvi,93,1,$iMRef,0 "`$optList
icalmod=3
for icallev in 8 6 4 2
do
(( nEvi = nEvi0 + (icallev-1)*nEvi1 ))
optList=`echo " $nEvi,$icallev$icalmod,$iCalSel0,$iDut,0 "`$optList
optList=`echo " $nEvi,$icallev$icalmod,$iCalSel1,$iMRef,0 "`$optList
optList=`echo " $nEvi,$icallev$icalmod,$iCalSel0,99,50 "`$optList
#optList=`echo " $nEvi,$icallev$icalmod,$iCalSel1,99,50 "`$optList
done
optList=`echo " $nEvi,0,0,99,50 "`$optList # start Init1
echo optList: $optList
for inOpt in $optList
do
echo step ${iStep} with option $inOpt
((iStepLast = ${iStep}))
((iStep += 1))
mkdir Init${iStep}
cp rootlogon.C Init${iStep}
cp .rootrc Init${iStep}
cd Init${iStep}
if [[ ${lastOpt:+1} ]] ; then
# echo last round was done with $lastOpt, extract 2. and 3. word
i1=`expr index $inOpt , `
i2=($i1+3)
#echo `expr index $inOpt , ` = $i1
cMode=${inOpt:$i1:2}
cSel=${inOpt:$i2:1}
echo next iteration: cMode=$cMode, cSel=$cSel
if [[ ${cSel} = "-" ]];then
cSel=${inOpt:$i2:2}
echo cSel=$cSel
cSel="0"
fi
#copy calibration file
if (($iStep > $iRestart)) ; then
cp -v ../Init${iStepLast}/tofClust_${cRun}_set${cCalSet}.hst.root ${cRun}_set${cCalSet}_${cMode}_${cSel}tofClust.hst.root
fi
fi
lastOpt=$inOpt
# generate new calibration file
if (($iStep > $iRestart)) ; then
root -b -q '../../ana_digi_cal.C('$inOpt',"'${cRun}'",'${iCalSet}',0,'${iBRef}') '
cp -v tofClust_${cRun}_set${cCalSet}.hst.root ../${cRun}_set${cCalSet}_${cMode}_${cSel}tofClust.hst.root
cp *pdf ../
#./screenshot.sh
cd ..
rm ../${cRun}_set${cCalSet}_${cMode}_${cSel}tofClust.hst.root
ln -s ./${cRun}/${cRun}_set${cCalSet}_${cMode}_${cSel}tofClust.hst.root ../${cRun}_set${cCalSet}_${cMode}_${cSel}tofClust.hst.root
echo Init step $iStep with mode ${cMode}, option $inOpt finished
else
cd ..
echo Init step $iStep with mode ${cMode}, option $inOpt skipped
fi
done
cd ${wdir}
mv -v slurm-${SLURM_JOB_ID}.out ${outdir}/InitCalib_${cRun}_${cCalSet}.out
#!/bin/bash
# shell script to apply clusterizer calibrations
#SBATCH -J trk_cal_digi
#SBATCH -D /lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
#SBATCH --time=5-24:00:00
#SBATCH --mem=4000
#SBATCH --partition=long
cRun=$1
iCalSet=$2
((iTmp = $iCalSet ))
((iBRef = $iTmp % 1000))
((iTmp = $iTmp - $iBRef))
((iSet = $iTmp / 1000))
((iRef = $iTmp % 1000000))
((iRef = $iRef / 1000))
((iTmp = $iTmp - $iRef))
((iDut = $iTmp / 1000000))
iSel2=$3
cSel2=$iSel2
if (( iSel2<100 )); then
cSel2="0"$iSel2
fi
if (( iSel2<10 )); then
cSel2="00"$iSel2
fi
cCalSet=$iCalSet
if (( iCalSet<100000000 )); then
cCalSet="0"$iCalSet
fi
if (( iCalSet<10000000 )); then
cCalSet="00"$iCalSet
fi
if (( iCalSet<1000000 )); then
cCalSet="000"$iCalSet
fi
if (( iCalSet<100000 )); then
cCalSet="0000"$iCalSet
fi
echo cCalSet = $cCalSet
Deadtime=$4
if [[ ${Deadtime} = "" ]]; then
Deadtime=50.
fi
CalIdMode=$5
if [[ ${CalIdMode} = "" ]]; then
echo use native calibration file
CalIdMode=${cRun}
CalFile=${cRun}_set${cCalSet}_93_1tofClust.hst.root
else
CalFile=${CalIdMode}_set${cCalSet}_93_1tofClust.hst.root
RunFile=${cRun}_set${cCalSet}_93_1tofClust.hst.root
# rm ${RunFile}
# ln -s ${CalFile} ${RunFile}
echo use calibrations from ${CalFile}
fi
iCalOpt=$6
if [[ ${iCalOpt} = "" ]]; then
iCalOpt=1
fi
iTraSetup=$7
if [[ $iTraSetup = "" ]]; then
iTraSetup=11
fi
CalIdSet=$8
if [[ ${CalIdSet} = "" ]]; then
echo use native calibration file
CalIdSet=$cCalSet
else
CalFile=${CalIdMode}_set${CalIdSet}_93_1tofClust.hst.root
fi
echo trk_cal_digi for $cRun with iDut=$iDut, iRef=$iRef, iSet=$iCalSet, iSel2=$iSel2, iBRef=$iBRef, Deadtime=$Deadtime, CalFile=$CalFile
if [ -e /lustre/cbm ]; then
source /lustre/cbm/users/nh/CBM/cbmroot/trunk/build/config.sh
wdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020
outdir=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/hd2020/${cRun}
else
wdir=`pwd`
outdir=${wdir}/${cRun}
fi
nEvt=200000
dDTres=100000
dDTRMSres=100000
iter=0;
cd $wdir
mkdir $cRun
cd $cRun
cp ../.rootrc .
cp ../rootlogon.C .
echo Execute in `pwd`: ./trk_cal_digi.sh $1 $2 $3 $4 $5 $6 $7 $8
# get initial digi calibration
#cp -v ./I*/${CalFile} .
# get latest tracker offsets
# cp -v ../${cRun}_tofFindTracks.hst.root .
rm -v TCalib.res
nEvtMax=0
(( nEvtMax = nEvt*10 ))
#frange1 limits DT spectrum range
fRange1=2.
# frange2 limits chi2
fRange2=5.0
TRange2Limit=3.
iSel=911921
iGenCor=3
cCalSet2=${cCalSet}_$cSel2
case $iCalOpt in
1) # TOff
;;
2) # Walk
(( nEvt *= 10 ))
(( nEvtMax *= 10 ))
;;
esac
while [[ $dDTres > 0 ]]; do
nEvt=`echo "scale=0;$nEvt * 1./1." | bc`
#nEvt=`echo "scale=0;$nEvt * 1.1/1." | bc`
if [ $nEvt -gt $nEvtMax ]; then
nEvt=$nEvtMax
fi
fRange2=`echo "$fRange2 * 0.9" | bc`
compare_TRange2=`echo "$fRange2 < $TRange2Limit" | bc`
if [[ $compare_TRange2 > 0 ]]; then
fRange2=$TRange2Limit
fi
cd $wdir/$cRun
iCalAct=$iCalOpt
echo Enter while loop with $iCalAct in dir `pwd`
while [[ $iCalAct > 0 ]]; do
if [[ $iCalOpt = 1 ]] || [[ $iCalAct > 1 ]]; then
root -b -q '../ana_digi_cal.C('$nEvt',93,1,'$iRef',1,"'$cRun'",'$iCalSet',1,'$iSel2','$Deadtime',"'$CalIdMode'") '
# update calibration parameter file, will only be active in next iteration
# cp -v tofClust_${cRun}_set${cCalSet}.hst.root ../${cRun}_set${cCalSet}_93_1tofClust.hst.root
root -b -q '../ana_trks.C('$nEvt','$iSel','$iGenCor',"'$cRun'","'$cCalSet2'",'$iSel2','$iTraSetup','$fRange1','$fRange2','$Deadtime',"'$CalIdMode'",1,1,'$iCalSet','$iCalAct')'
#root -l 'ana_trksi.C(-1,10,1,"385.50.5.0","000014500_020",20,1,1.90,7.60,50,"385.50.5.0",1,1)'
cp -v New_${CalFile} ${CalFile}
else
cd $wdir
# store current status
dLDTres=$dDTres
dLDTRMSres=$dDTRMSres
echo Store limits $dLDTres, $dLDTRMSres
echo exec in `pwd`: trk_cal_digi.sh $1 $2 $3 $4 $5 1 $7
./trk_cal_digi.sh $1 $2 $3 $4 $5 1 $7
# restore old status
dDTres=$dLDTres
dDTRMSres=$dLDTRMSres
echo exec1done, resume with old status $dDTres, $dDTRMSres
fi
(( iCalAct -= 1 ))
echo Continue while loop with $iCalAct
done
cd $wdir/$cRun
Tres=`cat TOffAvOff.res`
TRMSres=`cat TOffAvRMS.res`
if [[ $Tres = 0 ]]; then
Tres=1
fi
dTdif=`echo "$dDTres - $Tres" | bc`
compare_result=`echo "$Tres < $dDTres" | bc`
dTRMSdif=`echo "$dDTRMSres - $TRMSres" | bc`
compare_RMS=`echo "$TRMSres < $dDTRMSres" | bc`
echo at iter=$iter got TOff = $Tres, compare to $dDTres, dTdif = $dTdif, result = $compare_result, TRMS = $TRMSres, old $dDTRMSres, dif = $dTRMSdif, result = $compare_RMS
((compare_result += $compare_RMS))
echo CMPR result_summary: $compare_result
# if [ $iter = 1 ]; then
# exit 0 # for debugging
# fi
if [[ $compare_result > 0 ]]; then
if [[ $Tres = 0 ]]; then
Tres=1
fi
dDTres=$Tres
dDTRMSres=$TRMSres
(( dDTRMSres -= 1 )) # next attempt should be at least 1ps better for continuation
cp -v New_${CalFile} ${CalFile}
cp -v New_${CalFile} ${CalFile}_$iter
else
dDTres=0
fi
(( iter += 1 ))
done
cd $wdir/$cRun
# generate full statistics digi file
root -b -q '../ana_digi_cal.C(-1,93,1,'$iRef',1,"'$cRun'",'$iCalSet',1,'$iSel2','$Deadtime',"'$CalIdMode'") '
cd $wdir
mv -v slurm-${SLURM_JOB_ID}.out ${outdir}/TrkCalDigi_${cRun}_${iCalSet}_${iSel2}_${iCalIdMode}.out
void pl_XY_trk(Int_t NSt = 4, Double_t MinEff = 0.5, Double_t dThr = 0.01) {
void pl_XY_trk(Int_t NSt = 4, Double_t MinEff = 0.5, Double_t dThr = 0.1) {
// TCanvas *can = new TCanvas("can22","can22");
// can->Divide(2,2);
TCanvas* can = new TCanvas("can", "can", 50, 0, 800, 800);
......
......@@ -3,6 +3,7 @@ void pl_pull_trk(Int_t NSt = 8, Int_t iVar = 0, Int_t iFit = 0) {
// can->Divide(2,2);
TCanvas* can = new TCanvas("can", "can", 50, 0, 800, 800);
switch (NSt) {
case 7: can->Divide(3, 4); break;
case 6:
case 5:
case 4: can->Divide(3, 3); break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment