This page describes some work I am doing on error-checking the CMS HCAL data. I have a CMSSW job which makes a set of plots I call "EricDIM" (Eric's Data Integrity Monitor). It also produces useful text output as standard output to cmsRun.

EricDIMRunSummary proposal to modify operation to collect data from a few events in each file of a run.

See EricFindingCMSData page for some help to locate data.


The current version of EricDIM is known to work with CMSSW version 3_4_1 (3_5_x does not work). Other versions are likely to work too. (Get from Web subversion interface if you don't have the svn command.)

NOTE: svn repository for this software is down; eventually code will be moved to another. Meanwhile, you can get a tarball here: Eric_2014-07-14.tar.gz.

  scramv1 project CMSSW CMSSW_x_x_x
  mkdir CMSSW_x_x_x/cfg      (optional, but I usually work from this directory)
  cd CMSSW_x_x_x/src
  eval `scramv1 runtime -sh`   (or -csh)
  mkdir Eric
  cd Eric
  svn co svn://
  cd EricDIM
  scramv1 b

It is also recommended to check out the EricRender tool to make PDF file of the plots at the same time. I usually put it at the CMSSW_x_x_x/src level, like so:

  cd ...CMSSW_x_x_x/src
  svn co svn://


Script below needs some work. Some arguments to PoolSource must be deleted (all but file name). Also, when invoking it, start with "/store/data...".

I have written an ugly perl script available here: Invoke it as:

 ./ /castor/ -r 118878

This script creates a python CMSSW configuration file, plus two shell scripts and which will run the CMSSW EricDIM job and render the plots. Please edit the script first to fit your environment.

Configuration parameters for EricDIM module:

Parameter Description Default
vint32 feds List of FEDs to process (700..731) all FEDs found (is this right?)
int32 dumpLevel Debug data dump level (0=no dump, 1=FED headers, 2=HTR headers) 0
bool debug Turn on code debug output false
uint32 dccVersion DCC firmware revision (required for < 0x2c18) 0
bool doCRC Check CRC on every event (slow!) false
string RootFileName Output file name for plots "EricDIMnnnn.root" (from run number)
bool dumpBinary Dump binary data (disables normal histogramming) false
string BinaryFileName File for binary dump (0xdeadbeef format) "EricDIMnnnn_raw.dat" (from run number)
int32 first_eventnumber First event number to process 1
int32 last_eventnumber Last event number to process 0xffffff
int32 abort_count Force abort of CMSSW after this number of events [1]  
bool CheckQIEData Check front-end data for capID rotation, link errors [2] false
bool SuppressQIEOK Suppress filling Digi 'AOK' and 'ZS' histogram bins false
bool ForceWriteHistos Force explicit writing of histograms to root file[3] false
int32 check_evn_count Number of EvN mismatch to print 0
int32 check_bcn_count Number of BcN mismatch to print 0
int32 check_orn_count Number of OrN mismatch to print 0


  1. This helps overcome a bug where CMSSW hangs or crashes if a data file was not closed correctly. When this event count is reached, the endJob() method is called to write out the root file and text reports, then abort().
  2. Currently this produces text-only output
  3. Bug/feature in CMSSW_2_1_6 at least with RAFF data causes duplicate histograms in root file if source is NewEventStreamFileReader and this param is true but results in missing histograms if source is PoolSource and this param is false. Sigh.

More Documenation

Sample Plots -- EricDIM_run166429.pdf

Plot Documentation -- EricDimPlotDescriptions

Text Output -- EricDimTextOutput

Older Releases

Releases for CMSSW_2_0_5 (can read data from 4/29/08 test run):

Preliminary releases (known to work with CMSSW_1_8_0)


I've written a Root script to render the resulting plots as a PS file. It is available at my subversion repository (web) or command line:

   cd ...CMSSW_x_x_x/src
   svn co

It produces a PS file as a fixed file name "" or something like that. Convert to PDF with 'ps2pdf'. Run it like this from the CMSSW_x_x_x/cfg directory:

   root -b -q '../src/EricRender/"EricDIM_run040922.root")'

Here is a perl script which will automatically make the config files... feed it a list or root or dat file names as arguments. It creates as output a .cfg file, and two shell scripts called which runs CMSSW and captures the output, and another called which runs the root script to make a PDF file, and finally copies it somewhere. Note: this script may need some editing to work for you... it has some assumptions about my setup in it.

Here is a set of tools I call "AutoDIM" which can automatically query DBS, determine which run(s) have HCAL FEDs, and run EricDIM on them.

-- EricHazen - 24-Feb-2010

Edit | Attach | Watch | Print version | History: r26 < r25 < r24 < r23 < r22 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r26 - 2015-02-27 - EricHazen
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback