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
#!/bin/bash
#

# Script to prepare the tables in TkAlignmentPixelPosition.
#
# In the beginning you have to state
# - the paths to the template config for the geometry comparison and
#   the plotting macros
# - which run numbers to test
# - which global tags and possibly which tracker alignment tags in which DB paths

#CONFIG_TEMPLATE="src/Alignment/MillePedeAlignmentAlgorithm/test/alignment_forGeomComp_cfg_TEMPLATE.py"
#PLOTMILLEPEDEDIR=
CONFIG_TEMPLATE="$CMSSW_BASE/src/Alignment/TrackerAlignment/test/alignment_forGeomComp_cfg_TEMPLATE.py"
PLOTMILLEPEDEDIR="$CMSSW_BASE/src/Alignment/MillePedeAlignmentAlgorithm/macros/"
if [ ! -f "${CONFIG_TEMPLATE}" ]
then
    CONFIG_TEMPLATE="${CMSSW_RELEASE_BASE}/src/Alignment/TrackerAlignment/test/alignment_forGeomComp_cfg_TEMPLATE.py"
fi
if [ ! -d "${PLOTMILLEPEDEDIR}" ]
then
    PLOTMILLEPEDEDIR="${CMSSW_RELEASE_BASE}/src/Alignment/MillePedeAlignmentAlgorithm/macros/"
fi

if [ $# -gt 0 ]
then
    EXECUTION_DIR="${1}/"
else
    EXECUTION_DIR="$(pwd)/"
fi

echo Using template $CONFIG_TEMPLATE 
echo and plotting macros from $PLOTMILLEPEDEDIR
echo "Running in ${EXECUTION_DIR}"
echo 

RUN_NUMBERS="272011 273000"

# First conditions to check
# (if ALIGNMENT_TAG1 and DB_PATH_TAG1 are empty takes content from GLOBALTAG1)
# also symbolic Global Tags are allowed
GLOBALTAG1="auto:run2_data"
# GLOBALTAG1="90X_dataRun2_Express_v4"
ALIGNMENT_TAG1="TrackerAlignment_2009_v1_express"
DB_PATH_TAG1="frontier://FrontierProd/CMS_CONDITIONS"

# Second conditions to check
# also symbolic Global Tags are allowed
GLOBALTAG2="auto:run2_data"
# GLOBALTAG2="90X_dataRun2_Express_v4"
ALIGNMENT_TAG2="SiPixelAli_PCL_v0_prompt"
# ALIGNMENT_TAG2="SiPixelAli_PCL_v0_p"
DB_PATH_TAG2="frontier://FrontierPrep/CMS_CONDITIONS"

if [ ! -d "${EXECUTION_DIR}" ]
then
    mkdir ${EXECUTION_DIR}
fi
cd ${EXECUTION_DIR}

for RUN in $RUN_NUMBERS ; do
    echo "============================================================"
    echo " Run $RUN: $GLOBALTAG1 / $ALIGNMENT_TAG1 (=1) vs $GLOBALTAG2 / $ALIGNMENT_TAG2 (=2)" 
    echo "============================================================"
    CONFIG1=alignment_forGeomComp_${GLOBALTAG1}_${ALIGNMENT_TAG1}_r${RUN}_1.py
    TREEFILE1=treeFile_${GLOBALTAG1}_${ALIGNMENT_TAG1}_r${RUN}_1.root
    TREEFILE1=`echo ${TREEFILE1//"auto:"/"auto_"}`
    LOGFILE1=alignment_${GLOBALTAG1}_${ALIGNMENT_TAG1}r${RUN}_1
    LOGFILE1=`echo ${LOGFILE1//"auto:"/"auto_"}`
    #echo $TREEFILE1 $LOGFILE1

    CONFIG2=alignment_forGeomComp_${GLOBALTAG2}_${ALIGNMENT_TAG2}_r${RUN}_2.py
    TREEFILE2=treeFile_${GLOBALTAG2}_${ALIGNMENT_TAG2}_r${RUN}_2.root
    TREEFILE2=`echo ${TREEFILE2//"auto:"/"auto_"}`
    LOGFILE2=alignment_${GLOBALTAG2}_${ALIGNMENT_TAG2}r${RUN}_2
    LOGFILE2=`echo ${LOGFILE2//"auto:"/"auto_"}`
    #echo $TREEFILE2 $LOGFILE2

    if [ -e $TREEFILE1 ] ; then
	echo "Removing old file" $TREEFILE1
	rm $TREEFILE1
    fi
    sed -e "s/RUNNUMBER/${RUN}/g" $CONFIG_TEMPLATE > ${CONFIG1}_tmp 
    sed -e "s/TREEFILE/${TREEFILE1}/g" ${CONFIG1}_tmp > ${CONFIG1}_tmp2
    sed -e "s/GLOBALTAG/${GLOBALTAG1}/g" ${CONFIG1}_tmp2 > ${CONFIG1}_tmp3
    sed -e "s/LOGFILE/${LOGFILE1}/g" ${CONFIG1}_tmp3 > ${CONFIG1}
  
    # maybe we need to overwrite GlobalTag alignment?
    if [ "$ALIGNMENT_TAG1" != "" ]; then
	cat >> ${CONFIG1} <<EOF

from CondCore.CondDB.CondDB_cfi import *
CondDBReference = CondDB.clone(connect = cms.string("$DB_PATH_TAG1"))
process.trackerAlignment = cms.ESSource("PoolDBESSource",
                                        CondDBReference,
                                        toGet = cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"),
                                                                   tag = cms.string("$ALIGNMENT_TAG1")
                                                                  )
                                                         )       
                                       )
process.es_prefer_trackerAlignment = cms.ESPrefer("PoolDBESSource", "trackerAlignment")
EOF
    fi

    rm ${CONFIG1}_tmp* 
    cmsRun $CONFIG1
    return_code=${?}
    if [ ${return_code} -ne 0 ]
    then
	echo "The command 'cmsRun ${CONFIG1}' failed. Please check the log file."
	exit ${return_code}
    fi
    rm remove_me.db

    if [ -e $TREEFILE2 ] ; then
	echo "Removing old file" $TREEFILE2
	rm $TREEFILE2
    fi
    sed -e "s/RUNNUMBER/${RUN}/g" $CONFIG_TEMPLATE > ${CONFIG2}_tmp 
    sed -e "s/TREEFILE/${TREEFILE2}/g" ${CONFIG2}_tmp > ${CONFIG2}_tmp2
    sed -e "s/GLOBALTAG/${GLOBALTAG2}/g" ${CONFIG2}_tmp2 > ${CONFIG2}_tmp3
    sed -e "s/LOGFILE/${LOGFILE2}/g" ${CONFIG2}_tmp3 > ${CONFIG2}
   
    # maybe we need to overwrite GlobalTag alignment?
    if [ "$ALIGNMENT_TAG2" != "" ]; then
	cat >> ${CONFIG2} <<EOF

from CondCore.CondDB.CondDB_cfi import *
CondDBReference = CondDB.clone(connect = cms.string("$DB_PATH_TAG2"))
process.trackerAlignment = cms.ESSource("PoolDBESSource",
                                        CondDBReference,
                                        toGet = cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"),
                                                                   tag = cms.string("$ALIGNMENT_TAG2")
                                                                  )
                                                         )       
                                       )
process.es_prefer_trackerAlignment = cms.ESPrefer("PoolDBESSource", "trackerAlignment")
EOF
    fi

    rm ${CONFIG2}_tmp*
    cmsRun $CONFIG2
    return_code=${?}
    if [ ${return_code} -ne 0 ]
    then
	echo "The command 'cmsRun ${CONFIG2}' failed. Please check the log file."
	exit ${return_code}
    fi
    rm remove_me.db

    HEREIAM=$(pwd)
    PLOTDIR=${HEREIAM}/PixelBaryCentrePlottingTools
    if [ ! -d ${PLOTDIR} ]
    then
       mkdir ${PLOTDIR}
       cp -r $PLOTMILLEPEDEDIR/* ${PLOTDIR}
       chmod -R +w ${PLOTDIR}
    fi
    cd ${PLOTDIR}
    root -b -q -l allMillePede.C "pixelPositionChange.C+(\"${HEREIAM}/$TREEFILE1\", \"${HEREIAM}/$TREEFILE2\")"
    return_code=${?}
    if [ ${return_code} -ne 0 ]
    then
	echo "Running 'allMillePede.C' failed."
	exit ${return_code}
    fi
    cd $HEREIAM
done