<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://t2bwiki.iihe.ac.be/index.php?action=history&amp;feed=atom&amp;title=TopSanityChecker</id>
	<title>TopSanityChecker - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://t2bwiki.iihe.ac.be/index.php?action=history&amp;feed=atom&amp;title=TopSanityChecker"/>
	<link rel="alternate" type="text/html" href="https://t2bwiki.iihe.ac.be/index.php?title=TopSanityChecker&amp;action=history"/>
	<updated>2026-04-20T11:13:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://t2bwiki.iihe.ac.be/index.php?title=TopSanityChecker&amp;diff=283&amp;oldid=prev</id>
		<title>Maintenance script: Created page with &quot; === TopSanityChecker === The aim of the sanity checker is to check for each datasample containing pat objects if everything is ok. &lt;br&gt; Could be used to &lt;br&gt; *Check the in...&quot;</title>
		<link rel="alternate" type="text/html" href="https://t2bwiki.iihe.ac.be/index.php?title=TopSanityChecker&amp;diff=283&amp;oldid=prev"/>
		<updated>2015-08-26T12:29:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; === TopSanityChecker === The aim of the sanity checker is to check for each datasample containing pat objects if everything is ok. &amp;lt;br&amp;gt; Could be used to &amp;lt;br&amp;gt; *Check the in...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
=== TopSanityChecker ===&lt;br /&gt;
The aim of the sanity checker is to check for each datasample containing pat objects if everything is ok. &amp;lt;br&amp;gt;&lt;br /&gt;
Could be used to &amp;lt;br&amp;gt;&lt;br /&gt;
*Check the integrity of the data&lt;br /&gt;
*Check if we can access to all the methods and variables needed for the analysis&lt;br /&gt;
*Check if bugs are still there &lt;br /&gt;
*Compare FullSim &amp;amp; FastSim&lt;br /&gt;
*Compare different Generator&lt;br /&gt;
*Compare different CMSSW releases&lt;br /&gt;
The output of this code (rootfiles and logfiles) should be stored in a backup location to be reused when needed (by example for comparison)&lt;br /&gt;
 &lt;br /&gt;
==== Location of the code ====&lt;br /&gt;
*You can find the code on cvs: [http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/UserCode/TopBrussels/SanityChecker/ UserCode/TopBrussels/SanityChecker] &lt;br /&gt;
*To check out the code: &amp;lt;br&amp;gt;&lt;br /&gt;
 cvs co UserCode/TopBrussels ; mv UserCode/TopBrussels . ; rm -r UserCode ; scramv1 b; &lt;br /&gt;
*To update the existing file: &amp;lt;br&amp;gt;&lt;br /&gt;
 export CVSROOT=:ext:your_login@cmscvs.cern.ch:/cvs_server/repositories/CMSSW &amp;lt;br&amp;gt;&lt;br /&gt;
 cvs update &lt;br /&gt;
*To commit new file&lt;br /&gt;
 cvs add new_file &amp;lt;br&amp;gt;&lt;br /&gt;
 cvs commit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Versions  ====&lt;br /&gt;
&lt;br /&gt;
Actually 3 branches exists:&lt;br /&gt;
*MAIN&lt;br /&gt;
*CMSSW_22X&lt;br /&gt;
*CMSSW_31X&lt;br /&gt;
ex: doing cvs co -r CMSSW_31X UserCode/TopBrussels/SanityChecker will checkout the latest development for 31X series. &amp;lt;br&amp;gt;&lt;br /&gt;
It still possible to use tag which are linked or not to a branch:&lt;br /&gt;
&lt;br /&gt;
*cvs co -r v1 UserCode/TopBrussels/SanityChecker : last version working with &amp;quot;old CMSSW tag&amp;quot; (TtGenEvent home made)&lt;br /&gt;
*cvs co -r CMSSW_227_TQAF_V04-08-07_v1 UserCode/TopBrussels/SanityChecker: version working with CMSSW_2_2_7 &amp;amp; TQAF V04-08-07&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;REMARK&amp;#039;&amp;#039;&amp;#039; One schould use TQAF V04-08-08 to have the genevent properly working!&lt;br /&gt;
*cvs co -r CMSSW_312_Greg_PreProdValidation UserCode/TopBrussels/SanityChecker version used for pre-production validation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;REMARK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*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 !! &lt;br /&gt;
*It&amp;#039;s important to create a new tag once we have a functioning version !!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Short description of modules ====&lt;br /&gt;
Here you can find a short description of the modules which you can include in your sanity check. &lt;br /&gt;
*Kinematics (Joris)&lt;br /&gt;
**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.&lt;br /&gt;
*Resolutions (Petra)&lt;br /&gt;
*Lepton (Muon &amp;amp; Electron) (Gregory)&lt;br /&gt;
*Jet/MET (Gregory &amp;amp; Ilaria)&lt;br /&gt;
*GenParticles &amp;amp; TtGenEvent (Ilaria &amp;amp; Eric)&lt;br /&gt;
*Truth Reco (base on Matching) (Petra)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;List of plots in all the modules&amp;#039;&amp;#039;&amp;#039; http://mon.iihe.ac.be/trac/t2b/wiki/TopSanityCheckerModules&lt;br /&gt;
&lt;br /&gt;
==== How to run the code ====&lt;br /&gt;
*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. &lt;br /&gt;
*You can use the following cfg file as an example to run the modules of the SanityChecker: test/dummychecker_cfg.py&lt;br /&gt;
&lt;br /&gt;
==== How to create new module ====&lt;br /&gt;
*Use as example the src/DummyChecker.cc file.&lt;br /&gt;
*Copy this file - rename it with the name of your new &amp;quot;module&amp;quot; (ex: KinematicsChecker) and change all the occurences DummyChecker by this new name &lt;br /&gt;
*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)&lt;br /&gt;
*The technicalities solved are: &amp;lt;br&amp;gt;&lt;br /&gt;
**Use the TFileService &lt;br /&gt;
**Create new directories &amp;amp; subdirectories&lt;br /&gt;
**Create TH1D &amp;amp; TH1F &amp;amp; TH2F&lt;br /&gt;
**Use the MessageLogger with several levels&lt;br /&gt;
**Create differents log files for each level&lt;br /&gt;
&lt;br /&gt;
==== To do list ====&lt;br /&gt;
*Concerning the MessageLogger,  we should define categories. Proposition: NoDataFound - LinkBroken - TooMuchDataFound - SummaryError - MainResults&lt;br /&gt;
&lt;br /&gt;
==== Some links ====&lt;br /&gt;
*For TFileService https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideTFileService&lt;br /&gt;
*For MessageLogger https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideMessageLogger &amp;amp; http://www.uscms.org/LPC/lpc_offl/MessageLogger/parameters.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MC Validation ===&lt;br /&gt;
&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;CMSSW_3_1_X MC validation&amp;#039;&amp;#039;&amp;#039; http://mon.iihe.ac.be/trac/t2b/wiki/TopSanityCheckerValidation&lt;br /&gt;
**cvs co -r CMSSW_312_Greg_PreProdValidation UserCode/TopBrussels/SanityChecker  (version used for the pre-production validation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TracNotice|{{PAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>