File indexing completed on 2024-04-06 12:10:36
0001
0002
0003
0004
0005
0006
0007 binpath="`readlink -f "$0"`"
0008 bindir="`dirname "$binpath"`"
0009
0010 function sigHdl(){
0011 if [ -e $TMPFILE ]; then
0012 rm "$TMPFILE"
0013 fi
0014 exit 0
0015 }
0016
0017
0018 trap sigHdl SIGKILL SIGABRT SIGQUIT SIGTERM SIGPIPE SIGINT
0019
0020
0021
0022
0023 temp=`getopt -o hs:n:N:p:Adqgfrle: --long help,l1axmin:,l1axmax:,no-l1a-history,local-file,fed-size,feds: \
0024 -n 'dumpRaw' -- "$@"`
0025
0026 if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
0027
0028
0029 eval set -- "$temp"
0030
0031 function help(){
0032 echo "usage: dumpRaw [OPTIONS...] {run_num|file_name}
0033 Dump ECAL raw data running DumpRaw module of CMSSW. CMSSW environment must be setup beforehand (see scramv1 runtime).
0034
0035 OPTIONS:
0036 -h displays this help on usage
0037 -s N specifies number of event to skip (default 0)
0038 -n N specifies number of events to process including skipped ones
0039 -N N specifies number of events to process excluding skipped ones.
0040 To be used in place of -n option.
0041 -e event1,event2,... processes events with ID event1, event2, ...
0042 -p N prescale factor (only supported for .lmf file)
0043 -A skip ADC count dump
0044 -q no dump
0045 -d runs EBDigiAna
0046 -l runs ListCollection
0047 --fed-size runs FedSize
0048 -g runs within gdb debugger
0049 -f --local-file file_name is a local file
0050 -r execute eval \`scramv1 runtime -sh\` in directory of $0.
0051 --no-l1a-history Disable display of L1A, BX and orbit counter history
0052 --l1axmin lower bound on l1a for histogramming
0053 --l1aymin upper bound on l1a for histogramming
0054 --feds FED ID range. Format first:last. E.g. for every ECAL DCCs: 601:654
0055 "
0056 }
0057
0058 nskip=0
0059 nevts=-1
0060 dump="True"
0061 dumpAdc="True"
0062 prog=DumpRaw
0063 l1axmin=1
0064 l1axmax=600
0065 fedmin=601
0066 fedmax=654
0067 prescale=1
0068 fedmin=601
0069 fedmax=654
0070 unset nevts_
0071 l1aHist="True"
0072 unset prefix
0073 unset gdb
0074 unset cmsswdir
0075 unset eventList
0076 while true ; do
0077 case "$1" in
0078 -h|--help) help; exit 0;;
0079 -s) nskip="$2"; shift 2;;
0080 -n) nevts="$2"; shift 2;;
0081 -N) nevts_="$2"; shift 2;;
0082 -p) prescale="$2"; shift 2;;
0083 -A) dumpAdc="False"; shift;;
0084 -d) prog="EBDigiAna"; shift;;
0085 -l) prog="ListCollection";shift;;
0086 --fed-size) prog="FedSize";shift;;
0087 -q) dump="False"; shift;;
0088 -g) gdb="gdb --args"; shift;;
0089 -f|--local-file) prefix="file:"; shift;;
0090 --l1axmin) l1axmin="$2"; shift 2;;
0091 --l1axmax) l1axmax="$2"; shift 2;;
0092 --no-l1a-history) l1aHist="False"; shift;;
0093 --feds) eval `echo $2 | sed 's/\([[:digit:]]\+\):\([[:digit:]]\)/fedmin=\1 fedmax=\2/'`; shift 2;;
0094 -r) cmsswdir="$bindir"; shift;;
0095 -e) eventList="$2"; shift 2;;
0096 --) shift ; break ;;
0097 *) echo "Internal error!" ; exit 1 ;;
0098 esac
0099 done
0100
0101 [ -n "$nevts_" ] && nevts=$((nskip+nevts_))
0102
0103 if [ -z "$cmsswdir" -a -z "$CMSSW_BASE" ]; then
0104 echo "CMSSW environment not set (CMSSW_BASE variable not found). Setting CMSSW environment for $bindir area (scramv1 runtime)."
0105 cmsswdir="$bindir"
0106 fi
0107
0108 if [ -n "$cmsswdir" ]; then
0109 eval `(cd "$cmsswdir" && scramv1 runtime -sh)`
0110 fi
0111
0112 TMPFILE=`mktemp -t dumpRaw.XXXXXXX`
0113 mv "$TMPFILE" "$TMPFILE.py"
0114 TMPFILE="$TMPFILE.py"
0115 if [ -z $TMPFILE ]; then
0116 echo 'Failed to create a temporary file!'
0117 exit 1
0118 fi
0119
0120 if [ -n "$1" ]; then
0121 if [ X"$1" = X-h -o X"$1" = X-h ];then
0122 echo "Usage: dumpRaw [datasetpath]
0123 for a local file, prefix the path by file:// or -f
0124 -s N skip N events
0125 -n N process N evnts
0126 +a skip ADC count dump
0127 "
0128 exit 0;
0129 fi
0130 if [ $1 == "-f" ]; then
0131 dataset="file://$2"
0132 else
0133 dataset="$1"
0134 fi
0135 else
0136 echo -n "Dataset/P5 run number: "
0137 read dataset
0138 fi
0139
0140 echo $dataset | egrep -q '^[[:digit:]]+$'
0141
0142 if [ X$? = X0 ]; then
0143
0144
0145
0146 dataset=`printf /local_data/daq/p5/ecal_local.%08d.0001.A.storageManager.0.*.dat $dataset`
0147
0148 dataset=`ls $dataset`
0149 dataset=`echo $dataset | sed 's/[^[:space:]]*/'\''file:\0'\''/g' | tr ' ' ,`
0150 else
0151 dataset="'${prefix}${dataset}'"
0152 fi
0153
0154 if [ -z "$dataset" ]; then
0155 echo 'A data set name is required!'
0156 exit 1
0157 fi
0158
0159
0160 format=`echo "$dataset" | sed 's/.*\.\(.*\)'\''/\1/'`
0161
0162 if [ X$format != Xlmf -a X$prescale != X1 ]; then
0163 echo "Prescale is not supported for $format file"
0164 exit 1
0165 fi
0166
0167 cat > "$TMPFILE" <<EOF
0168 import FWCore.ParameterSet.Config as cms
0169
0170 process = cms.Process("TEST")
0171 EOF
0172
0173 if [ "X$format" = Xroot ]; then
0174 cat >> "$TMPFILE" <<EOF
0175 process.source = cms.Source("PoolSource",
0176 fileNames = cms.untracked.vstring( $dataset ),
0177 )
0178 EOF
0179 elif [ "X$format" = Xlmf ]; then
0180 cat >> "$TMPFILE" <<EOF
0181 process.load("CalibCalorimetry.EcalLaserSorting.LmfSource_cfi")
0182 process.source.fileNames = cms.vstring( $dataset )
0183 process.source.preScale = cms.uint32( $prescale )
0184 process.source.orderedRead = cms.bool(True)
0185 process.source.verbosity = cms.untracked.int32(0)
0186 process.source.firstLuminosityBlockForEachRun = cms.untracked.VLuminosityBlockID()
0187 EOF
0188 else
0189 cat >> "$TMPFILE" <<EOF
0190 process.source = cms.Source("NewEventStreamFileReader",
0191 fileNames = cms.untracked.vstring( $dataset )
0192 )
0193 EOF
0194 fi
0195 cat >> "$TMPFILE" <<EOF
0196 process.MessageLogger = cms.Service("MessageLogger",
0197 cout = cms.untracked.PSet(
0198 threshold = cms.untracked.string('WARNING'),
0199 default = cms.untracked.PSet(
0200 limit = cms.untracked.int32(0)
0201 )
0202 ),
0203 destinations = cms.untracked.vstring('cout')
0204 )
0205 EOF
0206 if [ X$prog = XDumpRaw ];then
0207 if [ X$l1aHist = XTrue ]; then
0208 cat >> "$TMPFILE" <<EOF
0209 process.load('EventFilter.ScalersRawToDigi.ScalersRawToDigi_cfi')
0210 process.scalersRawToDigi.scalersInputTag = 'rawDataCollector'
0211 EOF
0212 cmssw_path="process.scalersRawToDigi*"
0213 else
0214 cmssw_path=""
0215 fi
0216 cmssw_path="${cmssw_path}process.dumpRaw"
0217 cat >> "$TMPFILE" <<EOF
0218 process.load("EventFilter.EcalRawToDigi.EcalDumpRaw_cfi")
0219 process.dumpRaw.fedRawDataCollectionTag = "source"
0220 process.dumpRaw.l1aMinX = $l1axmin
0221 process.dumpRaw.l1aMaxX = $l1axmax
0222
0223 process.dumpRaw.first_event = $((nskip+1))
0224 process.dumpRaw.last_event = cms.untracked.int32($((nskip+nevts)))
0225 process.dumpRaw.dumpAdc = $dumpAdc
0226 process.dumpRaw.dump = $dump
0227 process.dumpRaw.l1aHistory = $l1aHist
0228 process.dumpRaw.beg_fed_id = $fedmin
0229 process.dumpRaw.end_fed_id = $fedmax
0230 process.dumpRaw.eventList = [ $eventList ]
0231
0232 process.dumpRaw.beg_fed_id = $fedmin
0233 process.dumpRaw.end_fed_id = $fedmax
0234
0235 process.p = cms.Path($cmssw_path)
0236 EOF
0237 elif [ X$prog = XListCollection ]; then
0238 cat >> "$TMPFILE" <<EOF
0239 process.load("pgras.ListCollection.ListCollection_cfi")
0240 process.p = cms.Path(process.listColl)
0241 EOF
0242 elif [ X$prog = XFedSize ]; then
0243 cat >> "$TMPFILE" <<EOF
0244 process.load("pgras.FedSize.FedSize_cfi")
0245 process.fedSize.verbosity = 2
0246 process.p = cms.Path(process.fedSize)
0247 process.TFileService = cms.Service("TFileService",
0248 fileName = cms.string("fedsize.root"))
0249 EOF
0250 else
0251 cat >> "$TMPFILE" <<EOF
0252 process.load("EventFilter.EcalRawToDigi.EcalUnpackerData_cfi")
0253 process.load("pgras.EBDigiAna.EBDigiAna_cfi")
0254 process.load("Geometry.EcalMapping.EcalMapping_cfi")
0255 process.load("Geometry.EcalMapping.EcalMappingRecord_cfi")
0256
0257 process.p = cms.Path(process.ecalEBunpacker*process.ebDigiAna)
0258 EOF
0259 fi
0260
0261 EXE=cmsRun
0262 which $EXE > /dev/null
0263 if [ $? != 0 ]; then
0264 echo "$EXE not found in PATH. Has the CMSSW environment been set with scramv1 runtime command?"
0265 exit 1
0266 fi
0267
0268 $gdb "$EXE" $TMPFILE
0269
0270 if [ $? != 0 ]; then
0271 cat 1>&2 <<EOF
0272
0273 ********************************************************************************
0274 In case of \"ProductNotFound\" exception (see above) about type
0275 "FEDRawDataCollection", try to run with the option --no-l1a-history.
0276 ********************************************************************************
0277
0278 EOF
0279 fi
0280
0281
0282
0283