Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
#!/bin/sh

echo Analyzing for run: $1

       ##########################################################################
       ######      CSC Automated Calibration  -   Revision 11-24-2010      ######
       ######      Darin Baumgartel, Northeastern University               ######
       ##########################################################################

echo " "
echo "                  ***************************************************"
echo "                  ****     Beginning new Calibration Update      ****"
echo "                  ***************************************************"; echo " "

# Date label
NOW=$(date +"%b_%d_%Y__%R_%S")
echo $NOW
######################################################################################
###        MERGE THE GAINS, PEDS, XTALK, MATRIX VALUES INTO SUMMARY FILES           ### 
#######################################################################################

# Replace the run numbes with your desired run numbers (things like "run_######_Calib_CFEB_[----].plots" directories)

echo " ";echo "                  ****     Creating Summary Files:";echo " "
# CFEB02 - SCAPed is used for both noise-matrix (*_DB_NoiseMatrix.dat files) and pedestals (*_DB.dat files)
matrixname="matrixSummary_$NOW.dat"
for i in /nfshome0/cscdqm/results/calib/Test_CFEB02/run_$1_Calib_CFEB_SCAPed.plots/*/*_DB_NoiseMatrix.dat
do
cat $i >> $matrixname
done
echo "CFEB02: NoiseMatrix Summary File:      $matrixname    has been produced."; echo " "

pedsname="pedSummary_$NOW.dat"
for i in /nfshome0/cscdqm/results/calib/Test_CFEB02/run_$1_Calib_CFEB_SCAPed.plots/*/*_DB.dat
do
cat $i >> $pedsname
done
echo "CFEB02: Pedestals Summary File:        $pedsname       has been produced."; echo " "

# CFEB03 - Crosstalk is used for Crosstalk (*_DB_XTalk.dat files) 
xtalkname="xtalkSummary_$NOW.dat"
for i in /nfshome0/cscdqm/results/calib/Test_CFEB03/run_$1_Calib_CFEB_CrossTalk.plots/*/*_DB_Xtalk.dat
do
cat $i >> $xtalkname
done
echo "CFEB03: Crosstalk Summary File:        $xtalkname     has been produced."; echo " "

# CFEB04 - Gains is used for Gains (*_DB.dat files)
gainsname="gainSummary_$NOW.dat"
for i in /nfshome0/cscdqm/results/calib/Test_CFEB04/run_$1_Calib_CFEB_Gains.plots/*/*.dat
do
cat $i >> $gainsname
done
echo "CFEB04: Gains Summary File:            $gainsname      has been produced."; echo " "

#######################################################################################
###        Copy the read[----].cpp template files to date-labeled files and           ### 
###        filenames (replacing the string "FileName" with the names above)          ### 
#######################################################################################

echo " ";echo "                  ****     The following \"read\" files have been produced from templates:";echo " "
cat readMatrix.cpp | sed -e 's/FileName/'$matrixname'/' > readMatrix_$NOW.cpp; echo "readMatrix_$NOW.cpp"
cat readPeds.cpp | sed -e 's/FileName/'$pedsname'/' > readPeds_$NOW.cpp; echo "readPeds_$NOW.cpp"
cat readXtalk.cpp | sed -e 's/FileName/'$xtalkname'/' > readXtalk_$NOW.cpp; echo "readXtalk_$NOW.cpp"
cat readGains.cpp | sed -e 's/FileName/'$gainsname'/' > readGains_$NOW.cpp; echo "readGains_$NOW.cpp"; echo " "


#######################################################################################
###        Run the read[----].cpp files                                              ###
#######################################################################################

echo " ";echo "                  ****     Running read____.cpp files. Succesful completetion:";echo " "
echo "             READ___.CPP FILE:                           INPUT_FILE                    -->                       OUTPUT_FILE";echo " "

g++ readMatrix_$NOW.cpp -o readMatrix_$NOW  
./readMatrix_$NOW
echo "readMatrix_$NOW.cpp:      $matrixname     -->     GoodVals_$matrixname";

g++ readPeds_$NOW.cpp -o readPeds_$NOW  
./readPeds_$NOW
echo "readPeds_$NOW.cpp:        $pedsname        -->     GoodVals_$pedsname";

g++ readXtalk_$NOW.cpp -o readXtalk_$NOW  
./readXtalk_$NOW
echo "readXtalk_$NOW.cpp:       $xtalkname      -->     GoodVals_$xtalkname";

g++ readGains_$NOW.cpp -o readGains_$NOW  
./readGains_$NOW
echo "readGains_$NOW.cpp:       $gainsname       -->     GoodVals_$gainsname";

echo " "

#######################################################################################
###    Read DataBase Values, designate them as "old_db[---].dat" for comparison     ###
#######################################################################################

echo " ";echo " ";
echo "          ---------------------------------------------------------"
echo "          -----    RETRIEVING DATABASE VALUES AND STORING     -----"
echo "          ---------------------------------------------------------"
echo " ";echo "         >>>>>>>>>>>>>> Retrieve Crosstalk from DataBase <<<<<<<<<<<<<<";echo " ";cmsRun readDBCrosstalk_cfg.py 
echo " ";echo "         >>>>>>>>>>>>>> Retrieve Matrix from DataBase <<<<<<<<<<<<<<";echo " ";cmsRun readDBNoiseMatrix_cfg.py
echo " ";echo "         >>>>>>>>>>>>>> Retrieve Gains from DataBase <<<<<<<<<<<<<<";echo " ";cmsRun readDBGains_cfg.py 
echo " ";echo "         >>>>>>>>>>>>>> Retrieve Pedestals from DataBase <<<<<<<<<<<<<<";echo " ";cmsRun readDBPedestals_cfg.py; echo " "
echo " ";echo " ";
echo "          ---------------------------------------------------------"
echo "          -----          DATABASE VALUES RETRIEVED            -----"
echo "          ---------------------------------------------------------"

echo " ";echo " ";echo "                  ****     Reading Database Values: ";echo " "
rm old_dbxtalk.dat;rm old_dbmatrix.dat;rm old_dbgains.dat;rm old_dbpeds.dat
mv dbxtalk.dat old_dbxtalk.dat;                      echo "Crosstalk     -- DataBase file:   old_dbxtalk.dat    has been produced.";
mv dbmatrix.dat old_dbmatrix.dat;                    echo "Noise Matrix  -- DataBase file:   old_dbmatrix.dat   has been produced.";
mv dbgains.dat old_dbgains.dat;                      echo "Gains         -- DataBase file:   old_dbgains.dat    has been produced.";
mv dbpeds.dat old_dbpeds.dat;                        echo "Pedestals     -- DataBase file:   old_dbpeds.dat     has been produced."; echo " "

# Here I remove unnecessary characters in the matrix file not suitable for comparison with the merged file...
mv old_dbmatrix.dat old_dbmatrix_orig.dat
cat old_dbmatrix_orig.dat | sed -e 's/E:[0-9][0-9]//;s/E:[0-9]//;s/S:[0-9][0-9]//;s/S:[0-9]//;s/R:[0-9][0-9]//;s/R:[0-9]//;s/C:[0-9][0-9]//;s/C:[0-9]//;s/L:[0-9][0-9]//;s/L:[0-9]//;s/chan [0-9][0-9]//;s/chan [0-9]//;s/          /  /' > old_dbmatrix.dat
rm old_dbmatrix_orig.dat

#######################################################################################
###      Save values into SQLite File                                               ###
#######################################################################################

echo " ";echo " ";
echo "          ---------------------------------------------------------"
echo "          -----             Creating SQLite Files             -----"
echo "          ---------------------------------------------------------"

mv GoodVals_$gainsname gains.dat; mv GoodVals_$pedsname peds.dat; mv GoodVals_$matrixname matrix.dat; mv GoodVals_$xtalkname xtalk.dat;
cmsRun CSCDBCrosstalkPopCon_cfg.py; cmsRun CSCDBGainsPopCon_cfg.py; cmsRun CSCDBNoiseMatrixPopCon_cfg.py; cmsRun CSCDBPedestalsPopCon_cfg.py;
mv gains.dat GoodVals_$gainsname; mv peds.dat GoodVals_$pedsname; mv matrix.dat GoodVals_$matrixname; mv xtalk.dat GoodVals_$xtalkname;
mv DBCrossTalk.db DBCrossTalk_$NOW.db; mv DBGains.db DBGains_$NOW.db; mv DBNoiseMatrix.db DBNoiseMatrix_$NOW.db; mv DBPedestals.db DBPedestals_$NOW.db;
echo " "; echo " "; echo " SQLite File Creation Complete"

#######################################################################################
###       Create and Run Python Comparison Module                                   ###
#######################################################################################
echo " ";echo " ";
echo "          ---------------------------------------------------------"
echo "          -----    Running Comparison With Python Modules     -----"
echo "          ---------------------------------------------------------"

rm stubs/Compare.cc;
cat Compare_template.txt | sed -e 's/Matrix_FileName/'GoodVals_$matrixname'/;s/Peds_FileName/'GoodVals_$pedsname'/;s/Gains_FileName/'GoodVals_$gainsname'/;s/Xtalk_FileName/'GoodVals_$xtalkname'/' > stubs/Compare.cc;
cd ../../../
scramv1 b -j 4
cd -
echo "              "
echo "                    stubs/Compare.C File Created"; echo " "
 echo        "THIS MAY TAKE SEVERAL MINUTES, GO HAVE A CUP OF COFFEE"
echo " "; echo "                    Running Comparisons... ";

cmsRun compare_cfg.py

#######################################################################################
###      Load Results into Root NTuple                                              ###
#######################################################################################

echo " ";echo " ";
echo "          ---------------------------------------------------------"
echo "          -----      Creating/Running Root-NTuple Scripts     -----"
echo "          ---------------------------------------------------------"


cat diffGainsNtuple.C | sed -e 's/Gains_FileName/'GoodVals_$gainsname'/;s/RootFile/'diffGains_$NOW.root'/' >  "diffGainsNtuple_$NOW.C"
cat diffPedsNtuple.C | sed -e 's/Peds_FileName/'GoodVals_$pedsname'/;s/RootFile/'diffPeds_$NOW.root'/' >  "diffPedsNtuple_$NOW.C"
cat diffMatrixNtuple.C | sed -e 's/Matrix_FileName/'GoodVals_$matrixname'/;s/RootFile/'diffMatrix_$NOW.root'/' >  "diffMatrixNtuple_$NOW.C"
cat diffXtalkNtuple.C | sed -e 's/Xtalk_FileName/'GoodVals_$xtalkname'/;s/RootFile/'diffXtalk_$NOW.root'/' >  "diffXtalkNtuple_$NOW.C"

echo "               Scripts Produced:"; echo " "
echo "diffGainsNtuple_$NOW.C"; echo "diffPedsNtuple_$NOW.C";echo "diffMatrixNtuple_$NOW.C";echo "diffXtalkNtuple_$NOW.C"; echo " ";echo " "
echo "               Running Scripts:"; echo " "
 
rm RootProcesses
echo "{gROOT->ProcessLine(\"gROOT->Reset()\"); gROOT->ProcessLine(\".x diffGainsNtuple_$NOW.C\"); gROOT->ProcessLine(\"gROOT->Reset()\"); gROOT->ProcessLine(\".x diffPedsNtuple_$NOW.C\"); gROOT->ProcessLine(\"gROOT->Reset()\"); gROOT->ProcessLine(\".x diffMatrixNtuple_$NOW.C\"); gROOT->ProcessLine(\"gROOT->Reset()\"); gROOT->ProcessLine(\".x diffXtalkNtuple_$NOW.C\"); gROOT->ProcessLine(\".q\");}" >RootProcesses
root -l RootProcesses

echo " "; echo " ";echo "Root N-tuple production complete. "


#######################################################################################
###      Store Results                                                              ###
#######################################################################################

echo " ";echo " ";
echo "          ---------------------------------------------------------"
echo "          -----      Transferring Results to Dated Folder     -----"
echo "          ---------------------------------------------------------"

mkdir "Calibration_$NOW"
mv *$NOW* Calibration_$NOW
mv old_db*dat Calibration_$NOW
echo "          Results/Files stored in folder Calibration_$NOW"

echo " "
echo "                  ***************************************************"
echo "                  ****        Calibration Run is Complete        ****"
echo "                  ***************************************************"; echo " "