TopSanityChecker

From T2B Wiki
Jump to navigation Jump to search

TopSanityChecker

The aim of the sanity checker is to check for each datasample containing pat objects if everything is ok.
Could be used to

  • Check the integrity of the data
  • Check if we can access to all the methods and variables needed for the analysis
  • Check if bugs are still there
  • Compare FullSim & FastSim
  • Compare different Generator
  • Compare different CMSSW releases

The output of this code (rootfiles and logfiles) should be stored in a backup location to be reused when needed (by example for comparison)

Location of the code

cvs co UserCode/TopBrussels ; mv UserCode/TopBrussels . ; rm -r UserCode ; scramv1 b; 
  • To update the existing file:
export CVSROOT=:ext:your_login@cmscvs.cern.ch:/cvs_server/repositories/CMSSW 
cvs update
  • To commit new file
cvs add new_file 
cvs commit

Versions

Actually 3 branches exists:

  • MAIN
  • CMSSW_22X
  • CMSSW_31X

ex: doing cvs co -r CMSSW_31X UserCode/TopBrussels/SanityChecker will checkout the latest development for 31X series.
It still possible to use tag which are linked or not to a branch:

  • cvs co -r v1 UserCode/TopBrussels/SanityChecker : last version working with "old CMSSW tag" (TtGenEvent home made)
  • cvs co -r CMSSW_227_TQAF_V04-08-07_v1 UserCode/TopBrussels/SanityChecker: version working with CMSSW_2_2_7 & TQAF V04-08-07
    • REMARK One schould use TQAF V04-08-08 to have the genevent properly working!
  • cvs co -r CMSSW_312_Greg_PreProdValidation UserCode/TopBrussels/SanityChecker version used for pre-production validation

REMARK

  • Please take care of the branch/tag initially used to checkout when commiting the code because the news files will be save in MAIN or CMSSW_22X or CMSSW_31X depending of the case !!
  • It's important to create a new tag once we have a functioning version !!


Short description of modules

Here you can find a short description of the modules which you can include in your sanity check.

  • Kinematics (Joris)
    • This module will check the availability of basic members of the pat::Jets, pat::Muons, pat::METs, etc. Furthermore it will make plots of the p4() members like eta, Et, phi, etc.
  • Resolutions (Petra)
  • Lepton (Muon & Electron) (Gregory)
  • Jet/MET (Gregory & Ilaria)
  • GenParticles & TtGenEvent (Ilaria & Eric)
  • Truth Reco (base on Matching) (Petra)

List of plots in all the modules http://mon.iihe.ac.be/trac/t2b/wiki/TopSanityCheckerModules

How to run the code

  • The code is compatible with pat layer 1 objects produced in CMSSW_2_2_X (X=3,4) with this tag VXX-XX-XX for PhysicsTools/PatAlgos. Remark, this is a bit unclear at this moment, we should keep track of the PAT version we used to make the PAT objects which we use to develop the code on.
  • You can use the following cfg file as an example to run the modules of the SanityChecker: test/dummychecker_cfg.py

How to create new module

  • Use as example the src/DummyChecker.cc file.
  • Copy this file - rename it with the name of your new "module" (ex: KinematicsChecker) and change all the occurences DummyChecker by this new name
  • This line: DEFINE_FWK_MODULE(MyNewModule) at the end of your cc file will define your new module which could be called latter by the cfg_py file (on test directory)
  • The technicalities solved are:
    • Use the TFileService
    • Create new directories & subdirectories
    • Create TH1D & TH1F & TH2F
    • Use the MessageLogger with several levels
    • Create differents log files for each level

To do list

  • Concerning the MessageLogger, we should define categories. Proposition: NoDataFound - LinkBroken - TooMuchDataFound - SummaryError - MainResults

Some links


MC Validation


Template:TracNotice