From ef4e83c27e5c9616635fe7cc52d2df2cd8e8d7e9 Mon Sep 17 00:00:00 2001
From: Walter Lampl <Walter.Lampl@cern.ch>
Date: Wed, 18 Jun 2014 13:23:18 +0200
Subject: [PATCH] remove egClusters from itemList, to be move to egamma item
 list (CaloRecEx-00-02-56)

---
 .../CaloExample/CaloRecEx/cmt/requirements    |   31 +
 Calorimeter/CaloExample/CaloRecEx/doc/README  |   24 +
 .../CaloExample/CaloRecEx/doc/mainpage.h      |   17 +
 .../BeamSplash_physics_0087851_BPTXChecks.py  |    9 +
 .../CaloExample/CaloRecEx/share/CaloRecCTB.py |  147 ++
 .../share/CaloRecEx_HistoComparison.py        |  498 +++++++
 .../share/CaloRecEx_HistoComparison.txt       |   14 +
 ...alib0_csc11_007062_singlepart_gamma_E50.py |   82 ++
 ...RTT_calib0_csc11_007070_singlepart_e_E5.py |   78 +
 ...calib0_csc11_007080_singlepart_gamma_E5.py |   78 +
 ...lib0_csc11_007085_singlepart_gamma_E500.py |   75 +
 ...TT_calib1_csc11_005200_T1_McAtNlo_Jimmy.py |   99 ++
 ...T_calib1_csc11_007061_singlepart_e_E100.py |   74 +
 ...lib1_csc11_007063_singlepart_gamma_E100.py |   74 +
 ..._RTT_mc10_7TeV_107061_singlepart_e_E100.py |   74 +
 .../CaloRecEx_RTT_physics_0087851_BPTX.py     |   61 +
 .../CaloRecEx_RTT_physics_0091900_cosmics.py  |   56 +
 .../share/CaloRecEx_RTT_physics_Egamma.py     |  155 ++
 .../share/CaloRecEx_RTT_physics_MinBias.py    |   60 +
 .../share/CaloRecEx_RTT_physics_cosmics.py    |   54 +
 .../share/CaloRecEx_RTT_skeleton.RAWtoESD.py  |  151 ++
 ...ecEx_RTT_valid1_005200_T1_McAtNlo_Jimmy.py |  104 ++
 ...ecEx_RTT_valid1_105200_T1_McAtNlo_Jimmy.py |  143 ++
 .../CaloRecEx/share/CaloRecEx_Truth.py        |  536 +++++++
 .../CaloRecEx/share/CaloRecEx_check.py        |  148 ++
 .../share/CaloRecEx_checkAODESDcontent.py     |   77 +
 .../CaloRecEx/share/CaloRecEx_dump2.C         |   77 +
 .../CaloRecEx/share/CaloRecEx_extractRec.py   |  400 +++++
 .../CaloRecEx/share/CaloRecEx_memleak.py      |   45 +
 .../CaloRecEx/share/CaloRecEx_runMacros2.C    |   20 +
 .../CaloRecEx/share/CaloRecEx_runPython2.C    |   24 +
 .../CaloRecEx/share/CaloRecEx_topOptions.py   |   92 ++
 .../share/CaloRecOutputItemList_jobOptions.py |  148 ++
 ...lib0_csc11_007070_singlepart_e_E5Checks.py |   10 +
 ...b1_csc11_007061_singlepart_e_E100Checks.py |   10 +
 ...c10_7TeV_107061_singlepart_e_E100Checks.py |   10 +
 .../CaloRecEx/share/HistoComparison.py        |  500 +++++++
 .../CaloRecEx/share/HistoComparison.txt       |   32 +
 .../share/MinBias_physics_MinBiasChecks.py    |    9 +
 ...csc11_007062_singlepart_gamma_E50Checks.py |   10 +
 ..._csc11_007080_singlepart_gamma_E5Checks.py |    9 +
 ...sc11_007085_singlepart_gamma_E500Checks.py |   10 +
 ...sc11_007063_singlepart_gamma_E100Checks.py |   10 +
 .../CaloExample/CaloRecEx/share/Truth.py      |  536 +++++++
 .../CaloExample/CaloRecEx/share/check.py      |  150 ++
 .../CaloRecEx/share/checkAODESDcontent.py     |   77 +
 .../CaloExample/CaloRecEx/share/checkR.py     |  148 ++
 .../CaloExample/CaloRecEx/share/extractRec.py |  393 +++++
 .../CaloExample/CaloRecEx/share/memleak.py    |   45 +
 .../muons_physics_0091900_cosmicsChecks.py    |    9 +
 .../share/muons_physics_cosmicsChecks.py      |    9 +
 .../CaloExample/CaloRecEx/share/myperfmon.py  |   27 +
 .../CaloExample/CaloRecEx/share/rtt.css       | 1308 +++++++++++++++++
 .../CaloExample/CaloRecEx/share/runMacros2.C  |   20 +
 .../CaloExample/CaloRecEx/share/runMacros2R.C |   20 +
 .../CaloExample/CaloRecEx/share/runPython2.C  |   24 +
 .../CaloExample/CaloRecEx/share/runPython2R.C |   24 +
 ...ib1_csc11_005200_T1_McAtNlo_JimmyChecks.py |    9 +
 ...op_valid1_005200_T1_McAtNlo_JimmyChecks.py |    9 +
 ...op_valid1_105200_T1_McAtNlo_JimmyChecks.py |    9 +
 .../test/CaloRecEx_TestConfiguration.xml      |  503 +++++++
 61 files changed, 7655 insertions(+)
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/cmt/requirements
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/doc/README
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/doc/mainpage.h
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/BeamSplash_physics_0087851_BPTXChecks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecCTB.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.txt
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007062_singlepart_gamma_E50.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007070_singlepart_e_E5.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007080_singlepart_gamma_E5.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007085_singlepart_gamma_E500.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_005200_T1_McAtNlo_Jimmy.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007061_singlepart_e_E100.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007063_singlepart_gamma_E100.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_mc10_7TeV_107061_singlepart_e_E100.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_Egamma.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_skeleton.RAWtoESD.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_005200_T1_McAtNlo_Jimmy.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_105200_T1_McAtNlo_Jimmy.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_Truth.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_check.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_checkAODESDcontent.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_dump2.C
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_extractRec.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_memleak.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runMacros2.C
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runPython2.C
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_topOptions.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/CaloRecOutputItemList_jobOptions.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib0_csc11_007070_singlepart_e_E5Checks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib1_csc11_007061_singlepart_e_E100Checks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/Electrons_mc10_7TeV_107061_singlepart_e_E100Checks.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.txt
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/MinBias_physics_MinBiasChecks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007062_singlepart_gamma_E50Checks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007080_singlepart_gamma_E5Checks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007085_singlepart_gamma_E500Checks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/Photons_calib1_csc11_007063_singlepart_gamma_E100Checks.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/Truth.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/check.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/checkAODESDcontent.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/checkR.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/extractRec.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/memleak.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/muons_physics_0091900_cosmicsChecks.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/muons_physics_cosmicsChecks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/myperfmon.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/rtt.css
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/runMacros2.C
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/runMacros2R.C
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/share/runPython2.C
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/runPython2R.C
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/top_calib1_csc11_005200_T1_McAtNlo_JimmyChecks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/top_valid1_005200_T1_McAtNlo_JimmyChecks.py
 create mode 100644 Calorimeter/CaloExample/CaloRecEx/share/top_valid1_105200_T1_McAtNlo_JimmyChecks.py
 create mode 100755 Calorimeter/CaloExample/CaloRecEx/test/CaloRecEx_TestConfiguration.xml

diff --git a/Calorimeter/CaloExample/CaloRecEx/cmt/requirements b/Calorimeter/CaloExample/CaloRecEx/cmt/requirements
new file mode 100755
index 00000000000..348fae92064
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/cmt/requirements
@@ -0,0 +1,31 @@
+package CaloRecEx
+
+author  Emmanuel Le Guirriec <guirriec@cppm.in2p3.fr>
+
+branches run
+
+use AtlasPolicy AtlasPolicy-*
+
+use AtlasReconstructionRunTime AtlasReconstructionRunTime-*
+
+#use CaloRec CaloRec-* Calorimeter
+#use CaloTriggerTool CaloTriggerTool-00-01-02 Calorimeter
+#use CaloDetDescr CaloDetDescr-* Calorimeter 
+#use RecExCommon RecExCommon-* Reconstruction/RecExample
+
+
+#use CaloAthenaPool CaloAthenaPool-00-02-12 Calorimeter/CaloCnv
+#use CaloTPCnv CaloTPCnv-00-00-07  Calorimeter/CaloCnv
+#use AthenaPoolCnvSvc AthenaPoolCnvSvc-00-11-18 Database/AthenaPOOL
+#use DataModel DataModel-00-12-01 Control
+#use LArReadoutGeometry LArReadoutGeometry-00-00-18 LArCalorimeter/LArGeoModel
+
+apply_pattern declare_joboptions files="*.py"
+
+apply_pattern declare_runtime extras="../test/CaloRecEx_TestConfiguration.xml ../share/*.C ../share/rtt.css ../share/CaloRecEx_HistoComparison.txt ../share/*Checks.py"
+macro CaloRecEx_TestConfiguration "../test/CaloRecEx_TestConfiguration.xml"
+
+private
+use TestPolicy TestPolicy-*
+apply_pattern validate_xml
+public
diff --git a/Calorimeter/CaloExample/CaloRecEx/doc/README b/Calorimeter/CaloExample/CaloRecEx/doc/README
new file mode 100755
index 00000000000..05b08244a9e
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/doc/README
@@ -0,0 +1,24 @@
+
+CaloRecEx is a testing (ATN and RTT) package for the reconstruction in the Calorimeter.
+
+
+The RTT use :
+
+- didAnyTestFail.py : check the results of the tests (CaloRecEx_histComp.C,CaloRecEx_truth.C) and send an email to the people defined in http://marwww.in2p3.fr/~kbernard/caloperf/CaloRecEx_mails.txt
+- extractRec.py : extract cputime, memory, file size informations, memory leaks. It sends an email with the results of the tests. A test is defined like
+
+Name of the test : reference logfile
+1103_T1_McAtNLO_top:reflogRec1103_T1_McAtNLO_top
+
+and you have to add a line
+print "BEGIN_RTTINFO = 1103_T1_McAtNLO_top"
+in the jobOption of this test.
+
+
+- CaloRecEx_histComp.C : comparison of histograms 
+
+- CaloRecEx_truth.C : plots for truth 
+
+
+
+CaloRecEx_histComp.C and CaloRecEx_truth.C need paramaters which are defined in a file 1103_T1_McAtNLO_top.par (for the test 1103_T1_McAtNLO_top) stored in http://marwww.in2p3.fr/~kbernard/caloperf/
diff --git a/Calorimeter/CaloExample/CaloRecEx/doc/mainpage.h b/Calorimeter/CaloExample/CaloRecEx/doc/mainpage.h
new file mode 100644
index 00000000000..7a8612c30f3
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/doc/mainpage.h
@@ -0,0 +1,17 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+/**
+
+@mainpage CaloRecEx Package
+
+This package is mainly used to test (ATN, RTT) reconstruction in the calorimeter (only ntuple).
+
+@author Karim Bernardet bernardet@cppm.in2p3.fr
+
+@section FragOpt jobOptions fragments
+
+CaloRecOutputItemList_jobOptions.py : list of the calo objects written in the ESD/AOD 
+
+*/
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/BeamSplash_physics_0087851_BPTXChecks.py b/Calorimeter/CaloExample/CaloRecEx/share/BeamSplash_physics_0087851_BPTXChecks.py
new file mode 100644
index 00000000000..2154712102d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/BeamSplash_physics_0087851_BPTXChecks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=False
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=True
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecCTB.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecCTB.py
new file mode 100644
index 00000000000..c90d474c57c
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecCTB.py
@@ -0,0 +1,147 @@
+###############################################################
+#
+# Job options file to run Digitization for CTB Calo only
+#
+#==============================================================
+from AthenaCommon.DetFlags import DetFlags
+from AthenaCommon.GlobalFlags import GlobalFlags
+GlobalFlags.DetGeo.set_ctbh8()
+GlobalFlags.DataSource.set_geant4() 
+DetFlags.detdescr.all_setOn()
+DetFlags.ID_setOff()
+DetFlags.Calo_setOn()
+DetFlags.Muon_setOff()
+DetFlags.makeRIO.Calo_setOn()
+
+include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" )
+
+include( "PartPropSvc/PartPropSvc.py" )
+
+#
+# Pool Converters
+#
+include( "EventAthenaPool/EventAthenaPool_joboptions.py" )
+include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" )
+include( "LArAthenaPool/LArAthenaPool_joboptions.py" )
+include( "TileEventAthenaPool/TileEventAthenaPool_joboptions.py" )
+include( "G4SimAthenaPOOL/G4SimAthenaPOOL_joboptions.py" )
+
+#
+# Pool input
+#
+from AthenaCommon.AppMgr import ServiceMgr as svcMgr
+svcMgr.EventSelector.InputCollections = [
+"ctb_CaloDigit.pool.root"
+]
+
+# the Tile, LAr and Calo detector description package
+from AtlasGeoModel import SetGeometryVersion
+
+from GeoModelSvc.GeoModelSvcConf import GeoModelSvc
+GeoModelSvc = GeoModelSvc()
+GeoModelSvc.AtlasVersion = "ATLAS-CTB-01"
+
+CTBforTTCellMap=True
+from AtlasGeoModel import GeoModelInit
+
+#configure LAr to read from OFLP200
+from LArConditionsCommon.LArCondFlags import larCondFlags
+larCondFlags.LArDBConnection="<dbConnection>COOLONL_LAR/OFLP200</dbConnection>"
+
+include("LArDetDescr/LArDetDescr_H8_joboptions.py")
+from AthenaCommon.GlobalFlags import jobproperties
+jobproperties.Global.DetDescrVersion='CTB'
+DetDescrVersion = "CTB"
+
+# difference is in the IDET tag which is not defined from the jo above and which is found in the input file
+ServiceMgr.GeoModelSvc.IgnoreTagDifference = True
+
+# conditions
+include("LArConditionsCommon/LArConditionsCommon_MC_jobOptions.py")
+include( "TileConditions/TileTBConditions_jobOptions.py" )
+
+from RecExConfig.ObjKeyStore import objKeyStore
+objKeyStore.readInputFile('RecExPers/OKS_streamRDO.py')
+
+# calo reco
+# produces cells and TB 3x3 clusters
+
+from CaloRec.CaloRecFlags import jobproperties
+jobproperties.CaloRecFlags.doEmCluster = False
+jobproperties.CaloRecFlags.doCaloTopoCluster = False
+jobproperties.CaloRecFlags.doCaloEMTopoCluster = False
+jobproperties.CaloRecFlags.doTileMuId = False
+
+from TileRecUtils.TileRecFlags import jobproperties
+jobproperties.TileRecFlags.TileRawChannelContainer = "TileRawChannelFit"
+
+include ("CaloRec/CaloRec_jobOptions.py")
+
+from TileL2Algs.TileL2AlgsConf import TileL2Builder
+TileL2Builder = TileL2Builder("TileL2Builder")
+ToolSvc += TileL2Builder
+TileL2Builder.TileRawChannelContainer = "TileRawChannelFit"
+
+from CaloRec.CaloRecConf import CaloClusterMaker
+LArTBClusterMaker = CaloClusterMaker("LArTBClusterMaker")
+LArTBClusterMaker.ClustersOutputName="LArClusterTBEM"
+from LArClusterRec.LArClusterRecConf import LArTBClusterBuilder
+theLArTBClusterBuilder = LArTBClusterBuilder("theLArTBClusterBuilder")
+theLArTBClusterBuilder.EtaSize=3.
+theLArTBClusterBuilder.PhiSize=3.
+theLArTBClusterBuilder.CellContainers="AllCalo"
+theLArTBClusterBuilder.EnergyThreshold=-1000000.*MeV
+theLArTBClusterBuilder.ClusterNbr=1
+theLArTBClusterBuilder.LArCaloRegion="BARREL"
+ToolSvc += theLArTBClusterBuilder
+LArTBClusterMaker.ClusterMakerTools = [ ToolSvc.theLArTBClusterBuilder.getFullName() ]
+
+from AthenaCommon.AlgSequence import AlgSequence
+topSequence = AlgSequence()
+topSequence += LArTBClusterMaker
+
+
+#--------------------------------------------------------------
+# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
+#--------------------------------------------------------------
+MessageSvc = Service( "MessageSvc" )
+MessageSvc.OutputLevel      =  INFO
+
+#--------------------------------------------------------------
+# Event related parameters
+#--------------------------------------------------------------
+# Number of events to be processed (default is 10)
+theApp.EvtMax = 20
+theApp.EvtSel = "EventSelector"
+
+# Use auditors
+theApp.Dlls += [ "GaudiAud" ]
+#
+# write out a summary of the time spent
+#
+from GaudiSvc.GaudiSvcConf import AuditorSvc
+svcMgr += AuditorSvc()
+from GaudiSvc.GaudiSvcConf import ChronoStatSvc
+svcMgr += ChronoStatSvc()
+
+from GaudiSvc.GaudiSvcConf import MessageSvc
+svcMgr += MessageSvc( defaultLimit = 100000000 )
+
+from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
+Stream1 = AthenaPoolOutputStream("Stream1")
+Stream1.OutputFile = "ctb_CaloESD.pool.root"
+Stream1.ForceRead=TRUE
+Stream1.ItemList+=["EventInfo#*"]
+Stream1.ItemList+=["McEventCollection#*"]    
+Stream1.ItemList += ["CaloCalibrationHitContainer#*"]
+
+from AthenaCommon.Logging import logging
+logRecoOutputItemList_jobOptions = logging.getLogger( 'py:RecoOutputItemList_jobOptions' )
+include ("CaloRecEx/CaloRecOutputItemList_jobOptions.py")
+
+Stream1.ItemList += CaloESDList
+
+theKey = "LArClusterTBEM"
+Stream1.ItemList+=["CaloClusterContainer#"+theKey]
+Stream1.ItemList+=["CaloCellLinkContainer#"+theKey+"_Link"]
+Stream1.ItemList+=["CaloShowerContainer#"+theKey+"_Data"]
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.py
new file mode 100644
index 00000000000..c4c1beef881
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.py
@@ -0,0 +1,498 @@
+#!/usr/bin/env python
+
+import os,commands,sys,logging,math
+import ROOT
+import string
+
+class myHist:
+    def __init__(self,histName,histComment,histBins,histMinX,histMaxX,histFormula,histCondForm):
+        self.histName=histName
+        self.histComment=histComment
+        self.histMinX=histMinX
+        self.histMaxX=histMaxX
+        self.histFormula=histFormula
+        self.histCondForm=histCondForm
+        self.histBins=histBins
+        
+    def setHistName(self,name):
+        self.histName=name
+
+    def setHistComment(self,Comment):
+        self.histComment=Comment
+
+    def setHistFormula(self,form):
+        self.histFormula=form
+
+    def setHistCondForm(self,condform):
+        self.histCondForm=condform
+
+    def setHistXmin(self,minX):
+        self.HistMinx=minX
+
+    def setHistXmax(self,maxX):
+        self.histMaxX=maxX
+
+    def setHistBins(self,nbins):
+        self.histBins=nbins
+
+    def getHistName(self):
+        return self.histName
+
+    def getHistComment(self):
+        return self.histComment
+
+    def getHistMinX(self):
+        return self.histMinX
+
+    def getHistMaxX(self):
+        return self.histMaxX
+
+    def getHistBins(self):
+        return self.histBins
+
+    def getHistFormula(self):
+        return self.histFormula
+
+    def getHistCondForm(self):
+        return self.histCondForm
+
+
+class HistosComparison:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('HistosComparison')
+            hdlr = logging.FileHandler('HistosComparison.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+        self.filePar="filePar"
+
+    def normH(self,m_hist):
+        if m_hist.GetEntries() != 0 :
+            scale = 1/m_hist.GetEntries()
+            m_hist.Scale(scale)
+        else:
+            self.logger.error("No entries in ",m_hist.GetTitle())
+
+
+    def getPar(self,name,par):
+        com="grep \"RTTParm_almostIdentical_"+name+"_"+par+"\"  "+self.filePar+ "| cut -d= -f2 | tail -n1"
+        print com
+        res,val=commands.getstatusoutput(com)
+        if val=="":
+            val="notfound"
+        if res!=0:
+            self.logger.error('Problem to get the par of '+name+' : '+max)
+            val="notfound"
+            
+        return val
+    
+    def makeHist(self,ROOTntuple):
+
+        ROOT.gStyle.SetMarkerStyle(8)
+        ROOT.gStyle.SetStatW(0.4)
+        ROOT.gStyle.SetStatFontSize(0.12)
+        ROOT.gStyle.SetLabelSize(0.06)
+        ROOT.gStyle.SetOptStat(111110)
+        ROOT.gStyle.SetCanvasBorderMode(0)
+        ROOT.gStyle.SetPadBorderMode(0)
+        ROOT.gStyle.SetPadColor(0)
+        ROOT.gStyle.SetCanvasColor(0)
+        ROOT.gStyle.SetTitleColor(0)
+        ROOT.gStyle.SetStatColor(0)
+        
+        # only 3 digits
+        ROOT.TGaxis.SetMaxDigits(3);
+
+        myCanvas = ROOT.TCanvas("myCanvas","Cluster",1)
+        myCanvas.Divide(2,8)
+
+        file=open('CaloRecEx_HistoComparison.txt','r')
+        hists=[]
+        n=0
+        for line in file:
+            i=+1
+            myCanvas.cd(n)
+            tmp=line.strip().split(',')
+
+            name2=""
+            for i in tmp[1]:
+                if i==' ':
+                    i='_'
+                if i=='(':
+                    i='z'
+                if i==')':
+                    i='z'
+                name2+=i
+
+            # check bin x
+            xmin=self.getPar(name2,"xmin")
+            if xmin=="notfound":
+                xmin=tmp[3]
+
+            xmax=self.getPar(name2,"xmax")
+            if xmax=="notfound":
+                xmax=tmp[4]
+            
+            print "XMIN =", xmin
+            print "XMAX =", xmax
+            
+            if len(tmp)==7:
+                h=myHist(tmp[0],tmp[1],tmp[2],xmin,xmax,tmp[5],tmp[6])
+            else:
+                h=myHist(tmp[0],tmp[1],tmp[2],xmin,xmax,tmp[5],'')
+            hists.append(h)
+        file.close()
+        
+        rootFile = ROOT.TFile(ROOTntuple,'READ')
+        mytree = ROOT.gDirectory.Get('CollectionTree')
+        mytree.UseCurrentStyle()
+
+        hfile = ROOT.TFile("Cluster.hist","RECREATE","Clusters hist")
+        for h in hists:
+            self.logger.debug(h.getHistName(),',',h.getHistComment(),',',h.getHistBins(),',',h.getHistMinX(),',',h.getHistBins(),',',h.getHistMaxX())
+            m_h = ROOT.TH1F(h.getHistName(),h.getHistComment(),int(h.getHistBins()),float(h.getHistMinX()),float(h.getHistMaxX()))
+            mytree.Draw(h.getHistFormula(),h.getHistCondForm())
+            mytree.Draw(h.getHistFormula()+'>>'+h.getHistName(),h.getHistCondForm())
+            self.normH(m_h)
+            hfile.Write()
+        
+        rootFile.Close()
+        
+    def getFilePar(self):
+        com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(testName)
+            return -1
+        
+        nTestName=''
+        for i in testName:
+            if i !=' ':
+                nTestName+=i;
+
+        filePar=nTestName+".par";
+        com="wget http://cern.ch/CaloRTT/"+filePar;
+        print com
+        res,out=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(out)
+            return -1
+        return filePar
+
+    def getFileRef(self):
+
+#lnk++
+        com = "cat env.log|grep AtlasArea"
+        res,tmp1=commands.getstatusoutput(com)
+        tmpFind="nightlies/"
+        i1 = string.find(tmp1,tmpFind)+len(tmpFind)
+        tmp2 = tmp1[i1:]
+        i2 = string.find(tmp2,"/")
+        branch2 = tmp2[:i2]
+        print " The branch is", branch2
+
+        file=open('Branch.txt','a')
+        file.write(""+branch2+'')
+        file.close()
+
+#lnk--
+
+        com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(testName)
+            return -1
+        
+        nTestName=''
+        for i in testName:
+            if i !=' ':
+                nTestName+=i;
+
+        fileRef='ref'+nTestName+".hist"
+#lnk+++ Added different branch2 (dev,devval,pcache) reference histos
+        com="wget http://cern.ch/CaloRTT/"+branch2+'/'+fileRef
+#lnk---
+        res,out=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(out)
+            return -1
+        return fileRef
+
+    def initHTMLDraw(self):
+        f=open("DrawHistos.html","w")
+        f.write("<html><head><title>Draw</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head>")
+        f.write("<body>")
+        f.close();
+        
+    def closeHTMLDraw(self):
+        f=open("DrawHistos.html","a")
+        f.write("</body>")
+        f.write("</html>")
+
+
+    def initHTMLComparison(self):
+        f=open("Comparison.html","w")
+        f.write("<html><head><title>Draw</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head>")
+        f.write("<body>")
+        f.close();
+        
+    def closeHTMLComparison(self):
+        f=open("Comparison.html","a")
+        f.write("</body>")
+        f.write("</html>")
+
+    def Draw(self,histFile):
+        self.initHTMLDraw()
+        file = ROOT.TFile(histFile)
+        for i in file.GetListOfKeys():
+            self.DrawHisto(i.ReadObj())
+        file.Close()
+        self.closeHTMLDraw()
+
+
+    def DrawHisto(self,hist):
+        f=open("DrawHistos.html","a")
+
+        tmp=hist.GetTitle()
+        name=""
+        for i in tmp:
+            if i==' ':
+                i='_'
+            if i=='(':
+                i='z'
+            if i==')':
+                i='z'
+            name+=i
+
+        ROOT.gStyle.SetOptStat(ROOT.kFALSE)
+        can=ROOT.TCanvas()
+ 
+        hist.Draw()
+
+        legend=ROOT.TLegend(0.7,0.7,0.89,0.85)
+        legend.SetTextFont(72)
+        legend.SetTextSize(0.04)
+ 
+        legend.AddEntry(hist,"NEW","l")
+        legend.Draw()
+ 
+        can.Modified()
+        can.Update()
+
+        epsname=name+".eps"
+        gifname=name+".gif"
+
+        can.SaveAs(epsname)
+
+        com1='pstopnm -ppm -xborder 0 -yborder 0 -portrait '+epsname
+        com2='ppmtogif '+epsname+'001.ppm >'+gifname
+        
+        os.system(com1)
+        os.system(com2)
+        
+        f.write("<CENTER><BR>")
+        f.write("Name : "+hist.GetTitle()+'<BR>')
+        f.write("<BR>")
+        f.write("<TABLE border=1>")
+        f.write("<TR>")
+        f.write("<TD>Entries</TD>")
+        f.write("<TD>"+str(hist.GetEntries())+'</TD>')
+        f.write("</TR>")      
+        f.write("<TR>")
+        f.write("<TD>Mean</TD>")
+        f.write("<TD>"+str(hist.GetMean())+'</TD>')
+        f.write("</TR>")        
+        f.write("<TR>")
+        f.write("<TD>RMS</TD>")
+        f.write('<TD>'+str(hist.GetRMS())+'</TD>')
+        f.write("</TR>")       
+        f.write("</TABLE>")       
+        f.write("<IMG SRC=\""+gifname+'\"><BR>')
+        f.write('<HR><BR>')
+        f.close()
+
+    def almostIdentical(self,hist,refhist):
+        f=open("Comparison.html","a")
+
+        tmp=hist.GetTitle()
+        name=""
+        for i in tmp:
+            if i==' ':
+                i='_'
+            if i=='(':
+                i='z'
+            if i==')':
+                i='z'
+            name+=i
+
+        ROOT.gStyle.SetOptStat(ROOT.kFALSE)
+        can=ROOT.TCanvas()
+        can.SetLogy()
+
+        hist.SetLineColor(2)
+        hist.SetLineStyle(2)
+        hist.Draw()
+        if hist:
+            refhist.Draw("sames")
+        else:
+            refhist.Draw()
+
+        legend=ROOT.TLegend(0.7,0.7,0.89,0.85)
+        legend.SetTextFont(72)
+        legend.SetTextSize(0.04)
+ 
+        legend.AddEntry(hist,"NEW","l")
+        legend.AddEntry(refhist,"REF","l");
+        legend.Draw()
+ 
+        can.Modified()
+        can.Update()
+
+        epsname=name+".eps"
+        gifname=name+".gif"
+
+        can.SaveAs(epsname)
+
+        com1='pstopnm -ppm -xborder 0 -yborder 0 -portrait '+epsname
+        com2='ppmtogif '+epsname+'001.ppm >'+gifname
+        
+        os.system(com1)
+        os.system(com2)
+
+        restxt=open('Comparison.txt','a')
+        
+        f.write("<CENTER><BR>")
+        f.write("Name : "+hist.GetTitle()+'<BR>')
+        f.write("<BR>")
+        f.write("<TABLE border=1>")
+        f.write("<TR>")
+        f.write("<TD></TD>")
+        f.write("<TD>REF</TD>");
+        f.write("<TD>NEW</TD>")
+        f.write("</TR>")
+        
+        f.write("<TD>Entries</TD>")
+        f.write("<TD>"+str(refhist.GetEntries())+'</TD>')
+        f.write("<TD>"+str(hist.GetEntries())+'</TD>')
+        f.write("</TR>")      
+        f.write("<TR>")
+        f.write("<TD>Mean</TD>")
+        f.write("<TD>"+str(refhist.GetMean())+'</TD>')
+        f.write("<TD>"+str(hist.GetMean())+'</TD>')
+        f.write("</TR>")        
+        f.write("<TR>")
+        f.write("<TD>RMS</TD>")
+        f.write('<TD>'+str(refhist.GetRMS())+'</TD>')
+        f.write('<TD>'+str(hist.GetRMS())+'</TD>')
+        f.write("</TR>")       
+        f.write("</TABLE>")       
+        f.write("<IMG SRC=\""+gifname+'\"><BR>')
+
+        com="grep \"RTTParm_almostIdentical_"+name+ " \"  "+self.filePar+ "| cut -d= -f2 | tail -n1"
+        res,max=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error('Problem to the par of '+name+' : '+max)
+            return -1
+
+        dA=0.
+        A=0.
+        for k  in range(0,hist.GetNbinsX()+1):
+            dA += math.fabs(float(hist.GetBinContent(k) - refhist.GetBinContent(k)))
+            A += hist.GetBinContent(k)
+
+        if (A > 0):
+            dA = dA / A;
+
+  
+        restxt.write('&Sigma;(|&Delta;A|)/&Sigma;A is '+str(dA)+' (cut is '+str(max)+')\n')
+        f.write("<BR>")
+        f.write('&Sigma;(|&Delta;A|)/&Sigma;A is '+str(dA)+' (cut is '+str(max)+')\n')
+        f.write("<BR>")
+
+        if ( dA <= float(max) ):
+            restxt.write("TEST OK\n")
+            restxt.write("###################################\n")
+            f.write("<font color=\"green\">TEST OK<BR></font>")
+            f.write("<HR>")
+            f.write("</CENTER><BR>")
+            f.close()
+            restxt.close()
+            return 0
+        else:
+            restxt.write("TEST FAILED\n")
+            restxt.write("###################################\n")
+            f.write("<font color=\"red\">TEST FAILED</font><BR>")
+            f.write("<HR>")
+            f.write("</CENTER><BR>")
+            f.close()
+            restxt.close()
+            return -1
+
+    def testHistogram(self,hists,refhists,compType):
+        self.logger.info('---- testHistogram '+str(hists.GetTitle())+' ----')
+        if compType == "almostIdentical":
+            res=self.almostIdentical(hists,refhists)
+            return res
+        else:
+            self.logger.error('Comp type not known')
+            return -1
+        return 0
+
+    def histComparison(self,hist,refhist,compType):
+        self.initHTMLComparison()
+        fhists = ROOT.TFile(hist); 
+        frefhists = ROOT.TFile(refhist);
+
+        if len(fhists.GetListOfKeys())!=len(frefhists.GetListOfKeys()):
+            self.logger.warning('the ref and new file doesnt contain the same number of histograms')
+            self.Draw('Cluster.hist')
+            return 0
+            
+        if len(fhists.GetListOfKeys())==0:
+            self.logger.error('No histograms in the new file')
+            return -1
+
+        failed=[]
+        hists=[]
+        refHists=[]
+        for i in fhists.GetListOfKeys():
+            hists.append(i.ReadObj())
+        for i in frefhists.GetListOfKeys():
+            refHists.append(i.ReadObj())
+
+        for k in range(1,len(hists)):
+            if self.testHistogram(hists[k],refHists[k],compType)!=0:
+                failed.append(hists[k].GetName())
+                self.logger.error(hists[k].GetTitle()+' FAILED')
+            else:
+                self.logger.info(hists[k].GetTitle()+' OK')
+            self.logger.info('---- testHistogram DONE ----')
+            self.closeHTMLComparison()  
+        if len(failed)==0:
+            return 0
+        else:
+            return -1
+            
+    def run(self):
+        
+        self.filePar=self.getFilePar()
+        if self.filePar==-1:
+            self.logger.error('getFilePar() failed')
+            return -1
+
+        self.makeHist('ntuple.root')
+
+        fileRef=self.getFileRef()
+        if fileRef==-1:
+            self.logger.error('getFileRef() failed')
+            self.Draw('Cluster.hist')
+            return -1
+        
+        res=self.histComparison('Cluster.hist',fileRef,"almostIdentical");
+        return res
+a=HistosComparison('',logging.INFO)
+a.run()
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.txt b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.txt
new file mode 100755
index 00000000000..9676923af84
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_HistoComparison.txt
@@ -0,0 +1,14 @@
+m_h1,Cluster E (GeV),50,0.,1000.,cl_pt*cosh(cl_eta)/1000
+m_h2,Cluster E (GeV) - barrel,50,0.,1000.,cl_pt*cosh(cl_eta)/1000,abs(cl_eta)<1.475
+m_h3,Cluster E (GeV) - endcap,50,0.,1000.,cl_pt*cosh(cl_eta)/1000,abs(cl_eta)>=1.475
+m_h4,Cluster eta,40,-2.5,2.5,cl_eta
+m_h5,Cluster phi,25,-7.,7.,cl_phi
+m_h6,number of clusters,100,0.,1500.,cl_n
+m_h7,E frac. in Presampler - barrel,50,0.,1.,cl_E_PreSamplerB/(cl_E_PreSamplerB+cl_E_EMB1+cl_E_EMB2+cl_E_EMB3),abs(cl_eta)<1.475
+m_h8,E frac. in 1st samp. - barrel,50,0.,1.,cl_E_EMB1/(cl_E_PreSamplerB+cl_E_EMB1+cl_E_EMB2+cl_E_EMB3),abs(cl_eta)<1.475
+m_h9,E frac. in 2nd samp. - barrel,50,0.,1.,cl_E_EMB2/(cl_E_PreSamplerB+cl_E_EMB1+cl_E_EMB2+cl_E_EMB3),abs(cl_eta)<1.475
+m_h10,E frac. in 3rd samp. - barrel,50,0.,.1,cl_E_EMB3/(cl_E_PreSamplerB+cl_E_EMB1+cl_E_EMB2+cl_E_EMB3),abs(cl_eta)<1.475
+m_h11,E frac. in Presampler - endcap,50,0.,1.,cl_E_PreSamplerE/(cl_E_PreSamplerE+cl_E_EME1+cl_E_EME2+cl_E_EME3),abs(cl_eta)>=1.475 && abs(cl_eta)<=1.8
+m_h12,E frac. in 1st samp. - endcap,50,0.,1.,cl_E_EME1/(cl_E_PreSamplerE+cl_E_EME1+cl_E_EME2+cl_E_EME3),abs(cl_eta)>=1.475
+m_h13,E frac. in 2nd samp. - endcap,50,0.,1.,cl_E_EME2/(cl_E_PreSamplerE+cl_E_EME1+cl_E_EME2+cl_E_EME3),abs(cl_eta)>=1.475
+m_h14,E frac. in 3rd samp. - endcap,50,0.,0.1,cl_E_EME3/(cl_E_PreSamplerE+cl_E_EME1+cl_E_EME2+cl_E_EME3),abs(cl_eta)>=1.475
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007062_singlepart_gamma_E50.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007062_singlepart_gamma_E50.py
new file mode 100755
index 00000000000..a59b1aa5b1f
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007062_singlepart_gamma_E50.py
@@ -0,0 +1,82 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+#obsolte doAODLVL1=False
+#doTruth=False
+
+recAlgs.doMissingET=False
+
+
+rec.CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+#EvtMax=4
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+#obsolete jobproperties.Global.DetDescrVersion='ATLAS-CSC-01-00-00'
+
+#PoolRDOInput= ["/castor/cern.ch/atlas/project/dc2/preprod/g4dig805/dc2.002885.pyt_z_ee.g4dig805/data/dc2.002885.pyt_z_ee.g4dig805._0001.pool.root"]
+#PoolRDOInput=["/castor/cern.ch/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00001.pool.root"]
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = Photons_calib0_csc11_007062_singlepart_gamma_E50'
+
+import os
+com="echo \"BEGIN_RTTINFO = Photons_calib0_csc11_007062_singlepart_gamma_E50\">&MYRTTINFOS.txt"
+os.system(com)
+#from __main__ import AtlasTrackingGeometrySvc
+#AtlasTrackingGeometrySvc.AssignMaterialFromCOOL = False
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007070_singlepart_e_E5.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007070_singlepart_e_E5.py
new file mode 100755
index 00000000000..0d485cff6ae
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007070_singlepart_e_E5.py
@@ -0,0 +1,78 @@
+
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+# obsolete doAODLVL1=False
+#doTruth=False
+
+rec.CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+recAlgs.doMissingET=False
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+#jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-00-00"
+#PoolRDOInput= ["/castor/cern.ch/atlas/project/dc2/preprod/g4dig805/dc2.002885.pyt_z_ee.g4dig805/data/dc2.002885.pyt_z_ee.g4dig805._0001.pool.root"]
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+
+print 'BEGIN_RTTINFO = Electrons_calib0_csc11_007070_singlepart_e_E5'
+
+import os
+com="echo \"BEGIN_RTTINFO = Electrons_calib0_csc11_007070_singlepart_e_E5\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007080_singlepart_gamma_E5.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007080_singlepart_gamma_E5.py
new file mode 100755
index 00000000000..55edf961ab6
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007080_singlepart_gamma_E5.py
@@ -0,0 +1,78 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+#obsolete doAODLVL1=False
+#doTruth=False
+
+rec.CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+
+recAlgs.doMissingET=False
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+
+#jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-00-00"
+
+#PoolRDOInput= ["/castor/cern.ch/atlas/project/dc2/preprod/g4dig805/dc2.002885.pyt_z_ee.g4dig805/data/dc2.002885.pyt_z_ee.g4dig805._0001.pool.root"]
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = Photons_calib0_csc11_007080_singlepart_gamma_E5'
+
+import os
+com="echo \"BEGIN_RTTINFO = Photons_calib0_csc11_007080_singlepart_gamma_E5\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007085_singlepart_gamma_E500.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007085_singlepart_gamma_E500.py
new file mode 100755
index 00000000000..0133b0107ce
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib0_csc11_007085_singlepart_gamma_E500.py
@@ -0,0 +1,75 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+#obsolete doAODLVL1=False
+#doTruth=False
+
+rec.CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+recAlgs.doMissingET=False
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+#obsolete jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-00-00"
+
+#PoolRDOInput= ["/castor/cern.ch/atlas/project/dc2/preprod/g4dig805/dc2.002885.pyt_z_ee.g4dig805/data/dc2.002885.pyt_z_ee.g4dig805._0001.pool.root"]
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = Photons_calib0_csc11_007085_singlepart_gamma_E500'
+
+import os
+com="echo \"BEGIN_RTTINFO = Photons_calib0_csc11_007085_singlepart_gamma_E500\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_005200_T1_McAtNlo_Jimmy.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_005200_T1_McAtNlo_Jimmy.py
new file mode 100755
index 00000000000..c268599615e
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_005200_T1_McAtNlo_Jimmy.py
@@ -0,0 +1,99 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+from MuonRecExample.MuonRecFlags import muonRecFlags
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+#obsolete doAODLVL1=False
+#doTruth=False
+
+
+doMuid=False
+muonRecFlags.doMoore=False
+muonRecFlags.doMuonboy=False
+recAlgs.doMuGirl=False
+doMuonIdCombined=False
+doMuonIdStandalone=False
+recAlgs.doMuTag=False
+
+
+rec.CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+#EvtMax=2
+
+recAlgs.doMissingET=False
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+#obsolete jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-02-00"
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = top_calib1_csc11_005200_T1_McAtNlo_Jimmy'
+import os
+com="echo \"BEGIN_RTTINFO = top_calib1_csc11_005200_T1_McAtNlo_Jimmy\">&MYRTTINFOS.txt"
+os.system(com)
+
+
+
+from PerfMonComps.PerfMonFlags import jobproperties
+jobproperties.PerfMonFlags.doMonitoring = True
+
+from PerfMonComps.JobOptCfg import PerfMonSvc
+svcMgr += PerfMonSvc()
+
+jobproperties.PerfMonFlags.doDetailedMonitoring = True
+
+
+import os
+os.system('get_files perfmon.py')
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007061_singlepart_e_E100.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007061_singlepart_e_E100.py
new file mode 100755
index 00000000000..4ae3a2f84e1
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007061_singlepart_e_E100.py
@@ -0,0 +1,74 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+# obsolete doAODLVL1=False
+#doTruth=False
+
+rec.CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+#EvtMax=2
+
+recAlgs.doMissingET=False
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+#jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-02-00"
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = Electrons_calib1_csc11_007061_singlepart_e_E100'
+
+import os
+com="echo \"BEGIN_RTTINFO = Electrons_calib1_csc11_007061_singlepart_e_E100\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007063_singlepart_gamma_E100.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007063_singlepart_gamma_E100.py
new file mode 100755
index 00000000000..b6493b49c13
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_calib1_csc11_007063_singlepart_gamma_E100.py
@@ -0,0 +1,74 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+rec.doEgamma=False
+
+doWriteESD=False
+doWriteTAG=False
+doWriteAOD=False
+
+doTrackRecordFilter=False
+doTrigger=False
+doAOD=False
+doAODLVL1=False
+#doTruth=False
+
+CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+# number of event to process
+EvtMax=-1
+#EvtMax=2
+
+doMissingET=False
+
+include ("RecExCommon/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+#obsolete jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-02-00"
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = Photons_calib1_csc11_007063_singlepart_gamma_E100'
+
+import os
+com="echo \"BEGIN_RTTINFO = Photons_calib1_csc11_007063_singlepart_gamma_E100\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_mc10_7TeV_107061_singlepart_e_E100.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_mc10_7TeV_107061_singlepart_e_E100.py
new file mode 100755
index 00000000000..25e7d8fcc5b
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_mc10_7TeV_107061_singlepart_e_E100.py
@@ -0,0 +1,74 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+#obsolete doAODLVL1=False
+#doTruth=False
+
+rec.CBNTAthenaAware=True 
+
+doTopoClusterCBNT=True
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+
+recAlgs.doMissingET=False
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+from AthenaCommon.GlobalFlags import jobproperties
+jobproperties.Global.DetDescrVersion='ATLAS-GEO-16-00-00'
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = Electrons_mc10_7TeV_107061_singlepart_e_E100'
+
+import os
+com="echo \"BEGIN_RTTINFO = Electrons_mc10_7TeV_107061_singlepart_e_E100\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py
new file mode 100644
index 00000000000..4ecfba70b14
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py
@@ -0,0 +1,61 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+# Run arguments file auto-generated on Mon Mar 16 15:14:57 2009 by:
+# JobTransform: RAWtoESD
+# Version: RecJobTransforms-00-08-08
+
+# Authors: David Cote <david.cote@cern.ch>
+
+#################################################################################
+
+from PyJobTransformsCore.runargs import RunArguments
+runArgs = RunArguments()
+
+runArgs.maxEvents = 100
+
+runArgs.conditionsTag = 'COMCOND-REPC-002-03'
+
+# Input file that contains BSs
+runArgs.inputBSFile = [
+    "root://castoratlas//castor/cern.ch/grid/atlas/DAQ/2008/87851/physics_BPTX/daq.NoTag.0087851.physics.BPTX.LB0000.SFO-1._0001.data",
+    "root://castoratlas//castor/cern.ch/grid/atlas/DAQ/2008/87851/physics_BPTX/daq.NoTag.0087851.physics.BPTX.LB0000.SFO-3._0001.data"
+#    "root://castoratlas//castor/cern.ch/grid/atlas/DAQ/2008/87851/physics_BPTX/daq.NoTag.0087851.physics.BPTX.LB0000.SFO-2._0001.data",
+    #    "root://castoratlas//castor/cern.ch/grid/atlas/DAQ/2008/87851/physics_BPTX/daq.NoTag.0087851.physics.BPTX.LB0000.SFO-4._0001.data",
+#    "root://castoratlas//castor/cern.ch/grid/atlas/DAQ/2008/87851/physics_BPTX/daq.NoTag.0087851.physics.BPTX.LB0000.SFO-5._0001.data"
+    ]
+
+# Configuration fragment for DPD.
+#runArgs.autoConfiguration = ['FieldAndGeo', 'BeamType', 'ConditionsTag']
+
+# Basic string
+runArgs.trigStream = 'IDCosmic'
+
+runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=False','rec.doInDet=False','rec.doMuon=False','rec.doMuonCombined=False','rec.doEgamma=False','rec.doTau=False','rec.doTrigger=False','from LArROD.LArRODFlags import larRODFlags','larRODFlags.readDigits.set_Value_and_Lock(False)','doTopoClusterCBNT=True']
+
+# Configuration fragment for DPD.
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+
+runArgs.postExec = ['from CaloRec.CaloRecConf import CBNTAA_CaloCluster','theCBNT_CaloClusterTopo=CBNTAA_CaloCluster("CBNT_CaloClusterTopo")','theCBNT_CaloClusterTopo.MaxCaloCluster = 2000']
+
+# Outputfiles that contains ntuple
+runArgs.outputCBNTFile = 'ntuple.root'
+
+# 
+runArgs.loglevel = 'INFO'
+
+include ('RecJobTransforms/skeleton.RAWtoESD.py')
+
+#print memory usage for all events (in case of memory leak crash)
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = BeamSplash_physics_0087851_BPTX'
+import os
+com="echo \"BEGIN_RTTINFO = BeamSplash_physics_0087851_BPTX\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py
new file mode 100644
index 00000000000..64601c72a9c
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py
@@ -0,0 +1,56 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+# Run arguments file auto-generated on Mon Mar 16 15:14:57 2009 by:
+# JobTransform: RAWtoESD
+# Version: RecJobTransforms-00-08-08
+
+# Authors: David Cote <david.cote@cern.ch>
+
+#################################################################################
+
+from PyJobTransformsCore.runargs import RunArguments
+runArgs = RunArguments()
+
+# Maximum number of events to process
+runArgs.maxEvents = 150
+
+runArgs.conditionsTag = 'COMCOND-REPC-002-03'
+
+# Input file that contains BSs
+runArgs.inputBSFile = ["root://castoratlas//castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-1._0002.data"]
+
+# Configuration fragment for DPD.
+#runArgs.autoConfiguration = ['FieldAndGeo', 'BeamType', 'ConditionsTag']
+
+# Basic string
+runArgs.trigStream = 'IDCosmic'
+
+runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=False','rec.doInDet=False','rec.doMuon=False','rec.doMuonCombined=False','rec.doEgamma=False','rec.doTau=False','rec.doTrigger=False','doTopoClusterCBNT=True','rec.doFloatingPointException=False']
+
+# Configuration fragment for DPD.
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+
+runArgs.postExec = ['from CaloRec.CaloRecConf import CBNTAA_CaloCluster','theCBNT_CaloClusterTopo=CBNTAA_CaloCluster("CBNT_CaloClusterTopo")','theCBNT_CaloClusterTopo.MaxCaloCluster = 2000']
+
+# Outputfiles that contains ntuple
+runArgs.outputCBNTFile = 'ntuple.root'
+
+#
+runArgs.loglevel = 'INFO'
+
+include ('RecJobTransforms/skeleton.RAWtoESD.py')
+
+#print memory usage for all events (in case of memory leak crash)
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = muons_physics_0091900_cosmics'
+import os
+com="echo \"BEGIN_RTTINFO = muons_physics_0091900_cosmics\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_Egamma.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_Egamma.py
new file mode 100755
index 00000000000..7f525922453
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_Egamma.py
@@ -0,0 +1,155 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+
+from RecExConfig.RecFlags  import rec
+from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
+from RecExConfig.RecAlgsFlags import recAlgs
+from MuonRecExample.MuonRecFlags import muonRecFlags
+
+#rec.readRDO.set_Value_and_Lock(True)
+rec.doWriteESD.set_Value_and_Lock(False)
+tuple_name = "ntuple.root"
+
+rec.AutoConfiguration=['everything']
+rec.doHist.set_Value_and_Lock(False)
+rec.doCBNT.set_Value_and_Lock(False)
+rec.doWriteTAGCOM.set_Value_and_Lock(False)
+rec.doWriteTAG.set_Value_and_Lock(False)
+rec.doWriteAOD.set_Value_and_Lock(False)
+rec.doAOD.set_Value_and_Lock(False)
+rec.doMonitoring.set_Value_and_Lock(False)
+rec.readAOD.set_Value_and_Lock(False)
+
+
+from RecExConfig.RecAlgsFlags import recAlgs
+from MuonRecExample.MuonRecFlags import muonRecFlags
+rec.doEgamma=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+
+doMuid=False
+muonRecFlags.doMoore=False
+muonRecFlags.doMuonboy=False
+recAlgs.doMuGirl=False
+doMuonIdCombined=False
+doMuonIdStandalone=False
+recAlgs.doMuTag=False
+
+
+# number of event to process
+athenaCommonFlags.EvtMax.set_Value_and_Lock(1000)
+#EvtMax=2
+
+recAlgs.doMissingET=False
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+
+#jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-02-00"
+#jobproperties.Global.DetDescrVersion="ATLAS-GEO-02-01-00"
+#from AthenaCommon.GlobalFlags import globalflags
+#globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-02-01-00')
+
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+# D3PDMaker calo block
+
+from D3PDMakerCoreComps.MakerAlg import *
+from CaloD3PDMaker.ClusterD3PDObject import *
+from CaloD3PDMaker.CaloCellD3PDObject import *
+from CaloD3PDMaker.CaloInfoD3PDObject import *
+
+# switch off?? LArDigit JT. 09.10.2012
+# from CaloD3PDMaker.LArDigitD3PDObject import *
+
+from EventCommonD3PDMaker.EventInfoD3PDObject import *
+
+alg = MakerAlg("caloD3PD", topSequence, file = tuple_name , D3PDSvc = 'D3PD::RootD3PDSvc')
+alg += EventInfoD3PDObject (1)
+
+# alg += AllCaloCellD3PDObject (10)
+#alg += SelCaloCellD3PDObject (Param)
+# alg += EMCellD3PDObject (10)
+# alg += HECCellD3PDObject (10)
+# alg += FCALCellD3PDObject (10)
+# alg += TileCellD3PDObject (10)
+
+alg += CaloInfoD3PDObject (1)
+
+alg += ClusterD3PDObject (2)
+
+# switch off LArDigitObj JT 09.10.2012
+#alg += LArDigitD3PDObject (2)
+
+
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+import glob
+
+#Get the name of the job set by RTT extracted from xml file
+#The file userJobId_log is created  before athena running
+files = glob.glob('./*_log')
+script = [f for f in files if f.find('script') > -1]
+log = list(set(files)-set(script))
+jobname = 'not set'
+if len(log) == 1:
+    jobname = log[0].replace('_log', '').replace('./','')
+
+print 'BEGIN_RTTINFO = '+ jobname
+import os
+com="echo \"BEGIN_RTTINFO = " + jobname + "\">&MYRTTINFOS.txt"
+os.system(com)
+
+from PerfMonComps.PerfMonFlags import jobproperties
+jobproperties.PerfMonFlags.doMonitoring = True
+
+from PerfMonComps.JobOptCfg import PerfMonSvc
+svcMgr += PerfMonSvc()
+
+jobproperties.PerfMonFlags.doDetailedMonitoring = True
+
+
+import os
+os.system('get_files perfmon.py')
+
+ByteStreamInputSvc = svcMgr.ByteStreamInputSvc
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py
new file mode 100755
index 00000000000..9909ad379f4
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py
@@ -0,0 +1,60 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+# Run arguments file auto-generated on Mon Mar 16 15:14:57 2009 by:
+# JobTransform: RAWtoESD
+# Version: RecJobTransforms-00-08-08
+
+# Authors: David Cote <david.cote@cern.ch>
+
+#################################################################################
+
+from PyJobTransformsCore.runargs import RunArguments
+runArgs = RunArguments()
+
+runArgs.maxEvents = 100
+
+#runArgs.conditionsTag = 'COMCOND-REPC-002-03'
+runArgs.conditionsTag = 'COMCOND-REPC-000-00'
+
+# Input file that contains BSs
+runArgs.inputBSFile = ["/afs/cern.ch/user/c/cote/gencomm/NightlyTestInput/data09_900GeV.00141749.physics_MinBias.merge.RAW._lb0092._0001.1_10evts._0001.data" ]
+
+# Configuration fragment for DPD.
+#runArgs.autoConfiguration = ['FieldAndGeo', 'BeamType', 'ConditionsTag']
+
+# Basic string
+#runArgs.trigStream = 'IDCosmic'
+runArgs.trigStream = 'MinBias'
+
+runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=False','rec.doInDet=False','rec.doMuon=False','rec.doMuonCombined=False','rec.doEgamma=False','rec.doTau=False','rec.doTrigger=False','from LArROD.LArRODFlags import larRODFlags','larRODFlags.readDigits.set_Value_and_Lock(False)','doTopoClusterCBNT=True']
+
+# Configuration fragment for DPD.
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+
+# Configuration fragment for DPD.
+#runArgs.postInclude = ['RecJobTransforms/reducedRegionSelectorPostConfig.py']
+
+runArgs.postExec = ['from CaloRec.CaloRecConf import CBNTAA_CaloCluster','theCBNT_CaloClusterTopo=CBNTAA_CaloCluster("CBNT_CaloClusterTopo")','theCBNT_CaloClusterTopo.MaxCaloCluster = 2000']
+
+# Outputfiles that contains ntuple
+runArgs.outputCBNTFile = 'ntuple.root'
+
+# 
+runArgs.loglevel = 'INFO'
+
+include ('RecJobTransforms/skeleton.RAWtoESD.py')
+
+#print memory usage for all events (in case of memory leak crash)
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = MinBias_physics_MinBias'
+import os
+com="echo \"BEGIN_RTTINFO = MinBias_physics_MinBias\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py
new file mode 100755
index 00000000000..b24860976b1
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py
@@ -0,0 +1,54 @@
+
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+# Run arguments file auto-generated on Mon Mar 16 15:14:57 2009 by:
+# JobTransform: RAWtoESD
+# Version: RecJobTransforms-00-08-08
+
+#################################################################################
+
+from PyJobTransformsCore.runargs import RunArguments
+runArgs = RunArguments()
+
+# Maximum number of events to process
+runArgs.maxEvents = 150
+
+#runArgs.conditionsTag = 'COMCOND-REPC-002-03'
+runArgs.conditionsTag = 'COMCOND-REPC-000-00'
+
+# Input file that contains BSs
+runArgs.inputBSFile = ["/afs/cern.ch/user/c/cote/gencomm/NightlyTestInput/data09_cos.00135664.physics_IDCosmic.daq.RAW._lb0000._SFO-2._0001.data"]
+
+# Basic string
+runArgs.trigStream = 'IDCosmic'
+
+runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=False','rec.doInDet=False','rec.doMuon=False','rec.doMuonCombined=False','rec.doEgamma=False','rec.doTau=False','rec.doTrigger=False','doTopoClusterCBNT=True','rec.doFloatingPointException=False']
+
+#runArgs.preExec = ['from RecExConfig.InputFilePeeker import inputFileSummary','inputFileSummary.stream_names=StreamESD']
+
+# Configuration fragment for DPD.
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+
+runArgs.postExec = ['from CaloRec.CaloRecConf import CBNTAA_CaloCluster','theCBNT_CaloClusterTopo=CBNTAA_CaloCluster("CBNT_CaloClusterTopo")','theCBNT_CaloClusterTopo.MaxCaloCluster = 2000']
+
+# Outputfiles that contains ntuple
+runArgs.outputCBNTFile = 'ntuple.root'
+
+runArgs.loglevel = 'INFO'
+
+include ('RecJobTransforms/skeleton.RAWtoESD.py')
+
+#print memory usage for all events (in case of memory leak crash)
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = muons_physics_cosmics'
+import os
+com="echo \"BEGIN_RTTINFO = muons_physics_cosmics\">&MYRTTINFOS.txt"
+os.system(com)
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_skeleton.RAWtoESD.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_skeleton.RAWtoESD.py
new file mode 100644
index 00000000000..997b136c79d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_skeleton.RAWtoESD.py
@@ -0,0 +1,151 @@
+from AthenaCommon.Logging import logging
+recoLog = logging.getLogger('raw_to_esd')
+recoLog.info( '****************** STARTING RAW->ESD MAKING *****************' )
+
+from RecExConfig.RecFlags  import rec
+from AthenaCommon.BeamFlags import jobproperties
+from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
+from AthenaCommon.GlobalFlags import globalflags
+from PyJobTransformsCore.trfutil import checkString
+from JetRec.JetRecFlags import jetFlags
+
+try: from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
+except: print "WARNING PrimaryDPDFlags not available. Normal if HLT-Point1 release."
+
+
+##Disable all outputs, and enable it on demand
+rec.doWriteESD=False
+rec.doAOD=False
+rec.doWriteAOD=False
+rec.doWriteTAG=False	
+rec.doWriteTAGCOM=False
+rec.doMonitoring=False
+rec.doCBNT=False
+rec.doDPD=False
+rec.Production=True
+
+## Input
+if hasattr(runArgs,"inputBSFile"):
+    globalflags.InputFormat.set_Value_and_Lock('bytestream')
+    athenaCommonFlags.BSRDOInput.set_Value_and_Lock( runArgs.inputBSFile )
+if hasattr(runArgs,"inputRDOFile"):
+    rec.readRDO.set_Value_and_Lock( True )
+    globalflags.InputFormat.set_Value_and_Lock('pool')
+    athenaCommonFlags.PoolRDOInput.set_Value_and_Lock( runArgs.inputRDOFile )
+if hasattr(runArgs,"geometryVersion"): globalflags.DetDescrVersion.set_Value_and_Lock( runArgs.geometryVersion )
+if hasattr(runArgs,"conditionsTag"): globalflags.ConditionsTag.set_Value_and_Lock( runArgs.conditionsTag )
+
+## max/skip events
+if hasattr(runArgs,"maxEvents"): athenaCommonFlags.EvtMax.set_Value_and_Lock( runArgs.maxEvents )
+if hasattr(runArgs,"skipEvents"): athenaCommonFlags.SkipEvents.set_Value_and_Lock( runArgs.skipEvents )
+
+## special arguments
+if hasattr(runArgs,"beamType"): jobproperties.Beam.beamType.set_Value_and_Lock( runArgs.beamType )
+if hasattr(runArgs,"AMITag"): rec.AMITag=runArgs.AMITag
+if hasattr(runArgs,"RunNumber"): rec.RunNumber=runArgs.RunNumber
+if hasattr(runArgs,"projectName"): rec.projectName=runArgs.projectName
+if hasattr(runArgs,"trigStream"): rec.triggerStream=runArgs.trigStream
+if hasattr(runArgs,"triggerConfig"):
+    from TriggerJobOpts.TriggerFlags import TriggerFlags as tf
+    tf.triggerConfig=runArgs.triggerConfig
+
+## autoConfiguration keywords triggering pre-defined functions
+if hasattr(runArgs,"autoConfiguration"):
+    for key in runArgs.autoConfiguration:
+        rec.AutoConfiguration.append(key)
+
+## Outputs
+if hasattr(runArgs,"RAW_IDPROJCOMM"):
+    rec.doESD.set_Value_and_Lock( True )
+    rec.doDPD.set_Value_and_Lock( True )
+    rec.DPDMakerScripts().append("PrimaryDPDMaker/PrimaryDPDMaker.py")
+    from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
+    primDPD.WriteRAW_IDPROJCOMM.set_Value_and_Lock( True )
+    from PATJobTransforms.DPDUtils import outputBSNameStripper
+    simpleName = outputBSNameStripper(runArgs.RAW_IDPROJCOMM)
+    primDPD.RAW_IDPROJCOMMName.set_Value_and_Lock(simpleName)
+
+if hasattr(runArgs,"outputESDFile"):
+    rec.doESD.set_Value_and_Lock( True )
+    rec.doWriteESD.set_Value_and_Lock( True )
+    athenaCommonFlags.PoolESDOutput.set_Value_and_Lock( runArgs.outputESDFile )
+    
+include( "RecExCommission/RecExCommissionFlags_jobOptions.py" )
+if hasattr(runArgs,"outputFilteredESD"):
+    ATLASCosmicFlags.doFilteredESD=True 
+    ATLASCosmicFlags.FilteredESDOutputFile = runArgs.outputFilteredESD
+else:
+    ATLASCosmicFlags.doFilteredESD=False 
+
+if hasattr(runArgs,"outputAODFile"):
+    rec.doAOD.set_Value_and_Lock( True )
+    rec.doWriteAOD.set_Value_and_Lock( True ) 
+    athenaCommonFlags.PoolAODOutput.set_Value_and_Lock( runArgs.outputAODFile )
+
+if hasattr(runArgs,"outputTAGComm"):
+    rec.doWriteTAGCOM.set_Value_and_Lock( True )
+    rec.PoolTAGCOMOutput.set_Value_and_Lock( runArgs.outputTAGComm )
+
+if hasattr(runArgs,"outputCBNTFile"):
+    rec.doCBNT.set_Value_and_Lock( True )
+    rec.RootNtupleOutput.set_Value_and_Lock( runArgs.outputCBNTFile ) 
+
+if hasattr(runArgs,"outputPixelCalibNtp"):
+    #WARNING beamType and rec.Commissioning need to be set BEFORE importing InDetFlags otherwise it's wrongly configured 
+    if hasattr(runArgs,"beamType"):
+        from InDetRecExample.InDetJobProperties import InDetFlags
+        InDetFlags.doPixelTrkNtuple.set_Value_and_Lock( True )
+        from InDetRecExample.InDetKeys import InDetKeys
+        InDetKeys.trkValidationNtupleName.set_Value_and_Lock( runArgs.outputPixelCalibNtp )
+    else:
+        raise RuntimeError("beamType needs to explicitely set to make outputPixelCalibNtp... FIX ME!")
+
+if hasattr(runArgs,"outputMuonCalibNtp"):
+    include( "RecExCommission/RecExCommissionFlags_jobOptions.py" )
+    ATLASCosmicFlags.doCalibFillNt = True
+    from MuonCalibAlgs.MuonCalibAlgsConf import MuonCalib__MuonCalibAlg
+    MuonCalib__MuonCalibAlg.NtupleName = runArgs.outputMuonCalibNtp
+
+if hasattr(runArgs,"outputNTUP_TRIGTAUFile"):
+    HLTMonDoOfflineTauTTP = True
+    from TrigTauPerformAthena.TrigTauPerformAthenaConf import TrigTauPerformAthenaAlgo
+    ttpalgo = TrigTauPerformAthenaAlgo()
+    ttpalgo.rootFile = runArgs.outputNTUP_TRIGTAUFile
+
+if hasattr(runArgs,"outputDQMonitorFile"):
+    rec.doMonitoring.set_Value_and_Lock(True)
+    from AthenaMonitoring.DQMonFlags import DQMonFlags
+    DQMonFlags.histogramFile.set_Value_and_Lock( runArgs.outputDQMonitorFile )
+
+## Pre-exec
+if hasattr(runArgs,"preExec"):
+    recoLog.info("transform pre-exec")
+    for cmd in runArgs.preExec:
+        cmd=checkString(cmd)
+        recoLog.info(cmd)
+        exec(cmd)
+
+## Pre-include
+if hasattr(runArgs,"preInclude"): 
+    for fragment in runArgs.preInclude:
+        include(fragment)
+
+#========================================================
+# Central topOptions (this is one is a string not a list)
+#========================================================
+if hasattr(runArgs,"topOptions"): include(runArgs.topOptions)
+else: include( "RecExCond/RecExCommon_topOptions.py" )
+
+## Post-include
+if hasattr(runArgs,"postInclude"): 
+    for fragment in runArgs.postInclude:
+        include(fragment)
+
+## Post-exec
+if hasattr(runArgs,"postExec"):
+    recoLog.info("transform post-exec")
+    for cmd in runArgs.postExec:
+        cmd=checkString(cmd)
+        recoLog.info(cmd)
+        exec(cmd)
+        
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_005200_T1_McAtNlo_Jimmy.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_005200_T1_McAtNlo_Jimmy.py
new file mode 100755
index 00000000000..47797fc1049
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_005200_T1_McAtNlo_Jimmy.py
@@ -0,0 +1,104 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+from MuonRecExample.MuonRecFlags import muonRecFlags
+rec.doEgamma=False
+
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+rec.doAOD=False
+#obsolete doAODLVL1=False
+#doTruth=False
+
+
+doMuid=False
+muonRecFlags.doMoore=False
+muonRecFlags.doMuonboy=False
+recAlgs.doMuGirl=False
+doMuonIdCombined=False
+doMuonIdStandalone=False
+recAlgs.doMuTag=False
+
+
+rec.CBNTAthenaAware=True 
+rec.doCBNT=True
+doTopoClusterCBNT=True
+
+# number of event to process
+jp.AthenaCommonFlags.EvtMax=-1
+#EvtMax=2
+
+recAlgs.doMissingET=False
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+
+#jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-02-00"
+#jobproperties.Global.DetDescrVersion="ATLAS-GEO-02-01-00"
+#from AthenaCommon.GlobalFlags import globalflags
+#globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-02-01-00')
+
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = top_valid1_005200_T1_McAtNlo_Jimmy'
+import os
+com="echo \"BEGIN_RTTINFO = top_valid1_005200_T1_McAtNlo_Jimmy\">&MYRTTINFOS.txt"
+os.system(com)
+
+
+
+from PerfMonComps.PerfMonFlags import jobproperties
+jobproperties.PerfMonFlags.doMonitoring = True
+
+from PerfMonComps.JobOptCfg import PerfMonSvc
+svcMgr += PerfMonSvc()
+
+jobproperties.PerfMonFlags.doDetailedMonitoring = True
+
+
+import os
+os.system('get_files perfmon.py')
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_105200_T1_McAtNlo_Jimmy.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_105200_T1_McAtNlo_Jimmy.py
new file mode 100755
index 00000000000..aefb34427da
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_valid1_105200_T1_McAtNlo_Jimmy.py
@@ -0,0 +1,143 @@
+import os
+
+print ('Hostname :')
+os.system('hostname')
+print ('CPU infos :')
+os.system('cat /proc/cpuinfo')
+print ('MEM infos :')
+os.system('cat /proc/meminfo')
+
+
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+
+from RecExConfig.RecFlags  import rec
+from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
+from RecExConfig.RecAlgsFlags import recAlgs
+from MuonRecExample.MuonRecFlags import muonRecFlags
+
+rec.readRDO.set_Value_and_Lock(True)
+rec.doWriteESD.set_Value_and_Lock(False)
+tuple_name = "ntuple.root"
+
+rec.AutoConfiguration=['everything']
+rec.doHist.set_Value_and_Lock(False)
+rec.doCBNT.set_Value_and_Lock(False)
+rec.doWriteTAGCOM.set_Value_and_Lock(False)
+rec.doWriteTAG.set_Value_and_Lock(False)
+rec.doWriteAOD.set_Value_and_Lock(False)
+rec.doAOD.set_Value_and_Lock(False)
+rec.doMonitoring.set_Value_and_Lock(False)
+rec.readAOD.set_Value_and_Lock(False)
+
+
+from RecExConfig.RecAlgsFlags import recAlgs
+from MuonRecExample.MuonRecFlags import muonRecFlags
+rec.doEgamma=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+
+doMuid=False
+muonRecFlags.doMoore=False
+muonRecFlags.doMuonboy=False
+recAlgs.doMuGirl=False
+doMuonIdCombined=False
+doMuonIdStandalone=False
+recAlgs.doMuTag=False
+
+
+# number of event to process
+athenaCommonFlags.EvtMax.set_Value_and_Lock(1000)
+#EvtMax=2
+
+recAlgs.doMissingET=False
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+
+#jobproperties.Global.DetDescrVersion="ATLAS-CSC-01-02-00"
+#jobproperties.Global.DetDescrVersion="ATLAS-GEO-02-01-00"
+#from AthenaCommon.GlobalFlags import globalflags
+#globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-02-01-00')
+
+
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+# D3PDMaker calo block
+
+from D3PDMakerCoreComps.MakerAlg import *
+from CaloD3PDMaker.ClusterD3PDObject import *
+from CaloD3PDMaker.CaloCellD3PDObject import *
+from CaloD3PDMaker.CaloInfoD3PDObject import *
+
+# switch off?? LArDigit JT. 09.10.2012
+# from CaloD3PDMaker.LArDigitD3PDObject import *
+
+from EventCommonD3PDMaker.EventInfoD3PDObject import *
+
+alg = MakerAlg("caloD3PD", topSequence, file = tuple_name , D3PDSvc = 'D3PD::RootD3PDSvc')
+alg += EventInfoD3PDObject (1)
+
+# alg += AllCaloCellD3PDObject (10)
+#alg += SelCaloCellD3PDObject (Param)
+# alg += EMCellD3PDObject (10)
+# alg += HECCellD3PDObject (10)
+# alg += FCALCellD3PDObject (10)
+# alg += TileCellD3PDObject (10)
+
+alg += CaloInfoD3PDObject (1)
+
+alg += ClusterD3PDObject (2)
+
+# switch off LArDigitObj JT 09.10.2012
+#alg += LArDigitD3PDObject (2)
+
+
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print 'BEGIN_RTTINFO = top_valid1_105200_T1_McAtNlo_Jimmy'
+import os
+com="echo \"BEGIN_RTTINFO = top_valid1_105200_T1_McAtNlo_Jimmy\">&MYRTTINFOS.txt"
+os.system(com)
+
+
+
+from PerfMonComps.PerfMonFlags import jobproperties
+jobproperties.PerfMonFlags.doMonitoring = True
+
+from PerfMonComps.JobOptCfg import PerfMonSvc
+svcMgr += PerfMonSvc()
+
+jobproperties.PerfMonFlags.doDetailedMonitoring = True
+
+
+import os
+os.system('get_files perfmon.py')
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_Truth.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_Truth.py
new file mode 100644
index 00000000000..cff3b9c4e6c
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_Truth.py
@@ -0,0 +1,536 @@
+#!/usr/bin/python
+
+
+import os,commands,sys,logging
+import ROOT
+import time,math,cmath
+
+class CaloRecEx_Truth:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('CaloRecEx_Truth')
+            hdlr = logging.FileHandler('CaloRecEx_Truth.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+            
+    def getFilePar(self):
+        com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(testName)
+            return -1
+        
+        nTestName=''
+        for i in testName:
+            if i !=' ':
+                nTestName+=i;
+
+        filePar=nTestName+".par";
+        com="wget http://cern.ch/CaloRTT/"+filePar
+        res,out=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(out)
+            return -1
+        return filePar
+
+    def initHTML(self):
+        f=open("CaloRecEx_Truth.html","w")
+        f.write("<html><head><title>Truth</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head>")
+        f.write("<body>")
+        f.close()
+
+
+        f=open("CaloRecEx_Truth.txt","w")
+        f.close()
+        
+    def closeHTML(self):
+        f=open("CaloRecEx_Truth.html","a")
+        f.write("</body>")
+        f.write("</html>")
+
+    def mysign(self,val):
+        if val<0.:
+            return -1
+        else:
+            return 1
+
+    def saveHisto(self,hist,filePar,opt):
+        html= open('CaloRecEx_Truth.html','a')
+
+        txt= open("CaloRecEx_Truth.txt","a");
+
+        tmp=hist.GetTitle()
+        name=""
+        for i in tmp:
+            if i==' ':
+                i='_'
+            if i=='(':
+                i='z'
+            if i==')':
+                i='z'
+            name+=i
+
+        com='grep RTTParm_truth_'+name+ ' '+filePar +' | cut -d= -f2 | tail -n1'
+
+        res,max=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error('Problem to the par of '+name+' : '+max)
+            return -1
+
+        can=ROOT.TCanvas()
+        # only 3 digits
+        ROOT.TGaxis.SetMaxDigits(3)
+        
+        hist.SetLineColor(2)
+        hist.SetLineStyle(2)
+        hist.Draw(opt)
+
+        txt.write("################################\n");
+        txt.write("Name : "+str(hist.GetTitle())+'\n')
+        txt.write("Mean = "+str(hist.GetMean())+'\n')
+        txt.write("RMS = "+str(hist.GetRMS())+'\n')
+
+        try:
+            float(max)
+        except:
+            max=0
+
+        isOk=0
+        if math.fabs(float(hist.GetMean())) > float(max):
+            isOk=-1
+            txt.write("TEST FAILED (lim = "+str(max)+')\n')
+        else:
+            txt.write("TEST OK (lim = "+str(max)+')\n')
+
+        can.Modified()
+        can.Update()
+
+        epsname=name+".eps"
+        gifname=name+".gif"
+
+        can.SaveAs(epsname)
+
+        com1='pstopnm -ppm -xborder 0 -yborder 0 -portrait '+epsname
+        com2='ppmtogif '+epsname+'001.ppm >'+gifname
+        
+        os.system(com1)
+        os.system(com2)
+        
+        html.write("<CENTER><BR>")
+        html.write("<BR>")
+        html.write("<IMG SRC=\""+gifname+'\"><BR>');
+        html.write("<HR>")
+
+        if isOk == -1 :
+            html.write("<BR>")
+            html.write("<CENTER><font color=red>TEST FAILED (lim = "+str(max)+")</font></CENTER>")
+        else:
+            html.write("<BR>")
+            html.write("<CENTER><font color=green>TEST OK (lim = "+str(max)+")</font></CENTER>")
+            html.write("<BR>")
+        html.write("<HR>")
+        
+        html.close()
+        txt.close()
+
+        return isOk
+
+    def doElectrons(self,filePar):
+        self.initHTML()
+        
+        #f = ROOT.TFile('ntuple.root')
+        #f.cd('CollectionTree')
+        #mytree=ROOT.gDirectory.Get('CollectionTree')
+
+        ##################################
+        #os.system('ls data/*root.* > ntuples.txt')
+        os.system('ls ntuple.root > ntuples.txt')
+        
+        f=open('ntuples.txt','r')
+        lines=f.readlines()
+        f.close()
+
+        chain = ROOT.TChain('CollectionTree')
+
+        for li in lines:
+            chain.Add('./'+li.strip())
+
+        mytree=chain
+        #################################
+
+        m_drmin  = ROOT.TH1F("m_drmin","drmin",100,-0.2,0.2)
+        m_h1   = ROOT.TH1F("m_h1","Energy resolution",100,-0.25,0.25)
+        m_h1.SetXTitle("(E_{t}(reco)-E_{t}(true))/E_{t}(true)")
+
+        m_h2   = ROOT.TH1F("m_h2","Phi resolution",100,-0.01,0.01)
+        m_h2.SetXTitle("#Phi resolution (rad)")
+
+        m_h3   = ROOT.TH1F("m_h3","Eta resolution in the barrel",100,-0.01,0.01)
+        m_h3.SetXTitle("#eta resolution")
+        
+        m_h4   = ROOT.TH1F("m_h4","Eta resolution in the endcap",100,-0.01,0.01)
+        m_h4.SetXTitle("#eta resolution")
+
+        m_h5   = ROOT.TH1F("m_h5","Efficiency vs eta",50,-3,3)  
+        m_h5.SetXTitle("#eta")
+
+        m_tmp1   = ROOT.TH1F("m_tmp1","EtaGen",50,-3,3)
+        m_tmp2  = ROOT.TH1F("m_tmp2","cl_eta",50,-3,3) 
+
+        entries=mytree.GetEntriesFast()
+
+        for jentry in xrange( entries ):
+            ientry=mytree.LoadTree( jentry )
+            if ientry < 0 :
+                break
+
+            nb=mytree.GetEntry(jentry)
+            if nb<=0:
+                continue
+            
+            nEvent = int(mytree.IEvent)
+            if nEvent<0:
+                continue
+
+            indEle=[]
+            iele=0
+            for ipart in range(0,mytree.NPar):
+                if abs((mytree.Type)[ipart])==11 and (mytree.GenStat)[ipart]==1 and (mytree.KMothNt)[ipart]==-1:
+                    indEle.append(ipart)
+                    m_tmp2.Fill((mytree.EtaGen)[indEle[iele]])
+
+                    iele+=1
+
+                    if iele>1:
+                        logger.info('two many electrons')
+                        return -1
+
+            nele=iele
+
+            # a quel cluster correspond quel electron ?
+            # je tourne sur ts les clusters de l ev
+            for ic in range(0,mytree.cl_nc): 
+                etacl = (mytree.cl_eta)[ic]
+                phicl = (mytree.cl_phi)[ic]
+                etcl  = (mytree.cl_et)[ic]
+
+                m_drmin.Fill((mytree.ZV)[0]);
+                etae = (mytree.EtaGen)[indEle[0]];
+                if math.fabs((mytree.cl_eta)[ic])>1.475 :
+                    etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])*(1-(mytree.ZV)[mytree.IVPrimary]/(self.mysign((mytree.cl_eta)[ic])*3800.0)))
+                    phiclcor = (mytree.cl_phi)[ic]+(0.3*3800.0*(-(mytree.Type)[indEle[0]]/11.0)*self.mysign((mytree.cl_eta)[ic]))/((mytree.cl_et)[ic]*cmath.sinh((mytree.cl_eta)[ic]))
+                    m_h4.Fill((etaclcor-etae).real)
+                else:
+                    etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])-(mytree.ZV)[mytree.IVPrimary]/1600.0)
+                    m_h3.Fill((etaclcor-etae).real)
+                    phiclcor = (mytree.cl_phi)[ic]+(0.3*1600.0*(-(mytree.Type)[indEle[0]]/11.0)/(mytree.cl_et)[ic])
+
+                phie = (mytree.PhiGen)[indEle[0]]
+                ete  = (mytree.PtGen)[indEle[0]]
+                
+                try:
+                    m_h2.Fill(phiclcor.real-phie)
+                except:
+                    m_h2.Fill(phiclcor-phie)
+                m_h1.Fill((etcl-ete)/ete)
+
+                m_tmp1.Fill(etae)
+
+        ROOT.gStyle.SetOptFit(1011)
+
+        m_h1.Fit("gaus")
+        m_h2.Fit("gaus")
+        m_h3.Fit("gaus")
+        m_h4.Fit("gaus")
+    		    
+        res1=self.saveHisto(m_h1,filePar,'')
+        res2=self.saveHisto(m_h2,filePar,'')
+        res3=self.saveHisto(m_h3,filePar,'')
+        res4=self.saveHisto(m_h4,filePar,'')
+        m_h5.Divide(m_tmp1,m_tmp2,1,1,"B")
+        
+	res5=self.saveHisto(m_h5,filePar,"E")
+
+        if res1==-1 or res2==-1 or res3==-1 or res4==-1 or res5==-1: 
+            return -1
+        else:
+            return 0
+            
+    def doTop(self,filePar):
+        self.initHTML()
+        
+        f = ROOT.TFile('ntuple.root')
+        #f.cd('CollectionTree')
+        mytree=ROOT.gDirectory.Get('CollectionTree')
+
+        m_drmin  = ROOT.TH1F("m_drmin","drmin",100,-0.2,0.2)
+        m_h1   = ROOT.TH1F("m_h1","Energy resolution",100,-0.25,0.25)
+        m_h1.SetXTitle("(E_{t}(reco)-E_{t}(true))/E_{t}(true)")
+
+        m_h2   = ROOT.TH1F("m_h2","Phi resolution",100,-0.01,0.01)
+        m_h2.SetXTitle("#Phi resolution (rad)")
+
+        m_h3   = ROOT.TH1F("m_h3","Eta resolution in the barrel",100,-0.01,0.01)
+        m_h3.SetXTitle("#eta resolution")
+        
+        m_h4   = ROOT.TH1F("m_h4","Eta resolution in the endcap",100,-0.01,0.01)
+        m_h4.SetXTitle("#eta resolution")
+
+        m_h5   = ROOT.TH1F("m_h5","Efficiency vs eta",50,-3,3)  
+        m_h5.SetXTitle("#eta")
+
+        m_tmp1   = ROOT.TH1F("m_tmp1","EtaGen",50,-3,3)
+        m_tmp2  = ROOT.TH1F("m_tmp2","cl_eta",50,-3,3) 
+
+        entries=mytree.GetEntriesFast()
+
+        for jentry in xrange( entries ):
+            ientry=mytree.LoadTree( jentry )
+            if ientry < 0 :
+                break
+
+            nb=mytree.GetEntry(jentry)
+            if nb<=0:
+                continue
+            
+            nEvent = int(mytree.IEvent)
+            if nEvent<0:
+                continue
+
+            indEle=[]
+            iele=0
+            for ipart in range(0,mytree.NPar):
+                if  abs((mytree.Type)[ipart])==11 and abs((mytree.Type)[(mytree.KMothNt)[ipart]])==24 :
+			#indEle[iele]=ipart
+                        indEle.append(ipart)
+			m_tmp2.Fill((mytree.EtaGen)[indEle[iele]])
+			iele=+1
+                        if iele>4:
+                            logger.info('two many electrons')
+                            return -1
+
+            nele=iele
+
+            # a quel cluster correspond quel electron ?
+            # je tourne sur ts les clusters de l ev
+            for ic in range(0,mytree.cl_nc): 
+                drmin = 9999.
+                im    = 0
+
+                # pour un cluster donne je tourne sur tous les electrons primaires trouves precedemment et je minimise dr pour savoir celui qui est le plus pres du cluster 
+                for iele in range(0,nele):
+                    deta = (mytree.EtaGen)[indEle[iele]] - (mytree.cl_eta)[ic];
+                    dphi = (mytree.PhiGen)[indEle[iele]] - (mytree.cl_phi)[ic];
+                    
+                    if dphi > math.pi: 
+                        dphi = math.fabs(dphi) - 2.*math.pi
+                    dr = math.sqrt(dphi*dphi + deta*deta)
+
+                    if dr < drmin:
+                        drmin = dr
+                        im    = iele
+
+                # l'electron matchant le cluster a l'indice im
+
+                m_drmin.Fill(drmin);
+
+                if drmin < 0.1  : 
+                    etacl = (mytree.cl_eta)[ic]
+                    phicl = (mytree.cl_phi)[ic]
+                    etcl  = (mytree.cl_et)[ic]
+                    etae = (mytree.EtaGen)[indEle[im]]
+                    if math.fabs((mytree.cl_eta)[ic])>1.475 :
+                        etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])*(1-(mytree.ZV)[mytree.IVPrimary]/(self.mysign((mytree.cl_eta)[ic])*3800.0)));
+                        phiclcor = (mytree.cl_phi)[ic]+(0.3*3800*(-(mytree.Type)[indEle[im]]/11.0)*self.mysign((mytree.cl_eta)[ic]))/((mytree.cl_et)[ic]*cmath.sinh((mytree.cl_eta)[ic]));
+                        m_h4.Fill((etaclcor-etae).real)
+                    else:
+                        etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])-(mytree.ZV)[mytree.IVPrimary]/1600.0)
+                        phiclcor = (mytree.cl_phi)[ic]+(0.3*1600.0*(-(mytree.Type)[indEle[im]]/11.0)/(mytree.cl_et)[ic])
+                        m_h3.Fill((etaclcor-etae).real)
+
+                    phie = (mytree.PhiGen)[indEle[im]]
+                    ete  = (mytree.PtGen)[indEle[im]]
+
+                    try:
+                        m_h2.Fill(phiclcor.real-phie)
+                    except:
+                        m_h2.Fill(phiclcor-phie)
+                    m_h1.Fill((etcl-ete)/ete)	 
+                    m_tmp1.Fill(etae)
+
+        
+        
+    
+        ROOT.gStyle.SetOptFit(1011)
+
+        m_h1.Fit("gaus")
+        m_h2.Fit("gaus")
+        m_h3.Fit("gaus")
+        m_h4.Fit("gaus")
+    		    
+        res1=self.saveHisto(m_h1,filePar,'')
+        res2=self.saveHisto(m_h2,filePar,'')
+        res3=self.saveHisto(m_h3,filePar,'')
+        res4=self.saveHisto(m_h4,filePar,'')
+        m_h5.Divide(m_tmp1,m_tmp2,1,1,"B")
+        
+	res5=self.saveHisto(m_h5,filePar,"E")
+
+        if res1==-1 or res2==-1 or res3==-1 or res4==-1 or res5==-1: 
+            return -1
+        else:
+            return 0
+    
+    def doPhotons(self,filePar):
+        self.initHTML()
+        
+        #f = ROOT.TFile('ntuple.root')
+        #f.cd('CollectionTree')
+        #mytree=ROOT.gDirectory.Get('CollectionTree')
+
+        ##################################
+        #os.system('ls photons/*root* > ntuples.txt')
+        os.system('ls ntuple.root > ntuples.txt')
+        f=open('ntuples.txt','r')
+        lines=f.readlines()
+        f.close()
+
+        chain = ROOT.TChain('CollectionTree')
+
+        for li in lines:
+            chain.Add('./'+li.strip())
+
+        mytree=chain
+        #################################
+
+        m_drmin  = ROOT.TH1F("m_drmin","drmin",100,-0.2,0.2)
+        m_h1   = ROOT.TH1F("m_h1","Energy resolution",100,-0.25,0.25)
+        m_h1.SetXTitle("(E_{t}(reco)-E_{t}(true))/E_{t}(true)")
+
+        m_h2   = ROOT.TH1F("m_h2","Phi resolution",100,-0.01,0.01)
+        m_h2.SetXTitle("#Phi resolution (rad)")
+
+        m_h3   = ROOT.TH1F("m_h3","Eta resolution in the barrel",100,-0.01,0.01)
+        m_h3.SetXTitle("#eta resolution")
+        
+        m_h4   = ROOT.TH1F("m_h4","Eta resolution in the endcap",100,-0.01,0.01)
+        m_h4.SetXTitle("#eta resolution")
+
+        m_h5   = ROOT.TH1F("m_h5","Efficiency vs eta",50,-3,3)  
+        m_h5.SetXTitle("#eta")
+
+        m_tmp1   = ROOT.TH1F("m_tmp1","EtaGen",50,-3,3)
+        m_tmp2  = ROOT.TH1F("m_tmp2","cl_eta",50,-3,3) 
+
+        entries=mytree.GetEntriesFast()
+
+        for jentry in xrange( entries ):
+            ientry=mytree.LoadTree( jentry )
+            if ientry < 0 :
+                break
+            nb=mytree.GetEntry(jentry)
+            if nb<=0:
+                continue          
+            nEvent = int(mytree.IEvent)
+            if nEvent<0:
+                continue
+            dRmin = 999.
+            TheNearestCluster = -1
+
+            #print int(mytree.IEvent),int(mytree.cl_nc),len(mytree.PtGen)
+            if mytree.cl_nc==0 or len(mytree.PtGen)==0:
+                continue
+            for i in range(0,int(mytree.cl_nc)):
+                #print 'i=',i
+                dphi = 1000.
+                deta = 1000.
+	       
+                # resolution in energy
+                val=((mytree.cl_et)[i]-(mytree.PtGen)[0])/(mytree.PtGen)[0]
+                
+                m_h1.Fill(val)        
+                # resolution in phi
+                if  (mytree.cl_phi)[i]-(mytree.PhiGen)[0] < 6: 
+                    dphi =((mytree.cl_phi)[i]-(mytree.PhiGen)[0])
+                    m_h2.Fill(dphi)
+
+                # resolution in eta barrel corrected by the z vertex spread
+                deta=0.
+                if  math.fabs((mytree.EtaGen)[0])<1.475:
+                    deta =(mytree.cl_eta)[i]-cmath.asinh(cmath.sinh((mytree.EtaGen)[0])+(mytree.ZV)[mytree.IVPrimary]/1600.)
+                    m_h3.Fill(deta.real)
+                elif math.fabs((mytree.EtaGen)[0])>= 1.475 :
+                    deta = (mytree.cl_eta)[i]-cmath.asinh(cmath.sinh((mytree.EtaGen)[0])/(1-self.mysign((mytree.EtaGen)[0])*(mytree.ZV)[mytree.IVPrimary]/3800.))
+                    
+                    m_h4.Fill(deta.real)
+		
+                if (math.fabs(dphi) > math.pi):
+                    dphi = 2.0*math.pi - math.fabs(dphi)
+                dR = math.sqrt(deta.real*deta.real+dphi*dphi)
+                if dR < dRmin:
+                    dRmin = dR
+                    TheNearestCluster = i
+	      
+	    
+            m_tmp2.Fill((mytree.EtaGen)[0])
+            if TheNearestCluster >= 0 and dRmin < 0.1:
+                m_tmp1.Fill((mytree.EtaGen)[0])
+
+        ROOT.gStyle.SetOptFit(1011)
+
+        m_h1.Fit("gaus")
+        m_h2.Fit("gaus")
+        m_h3.Fit("gaus")
+        m_h4.Fit("gaus")
+    		    
+        res1=self.saveHisto(m_h1,filePar,'')
+        res2=self.saveHisto(m_h2,filePar,'')
+        res3=self.saveHisto(m_h3,filePar,'')
+        res4=self.saveHisto(m_h4,filePar,'')
+        m_h5.Divide(m_tmp1,m_tmp2,1,1,"B")
+        
+	res5=self.saveHisto(m_h5,filePar,"E")
+
+        if res1==-1 or res2==-1 or res3==-1 or res4==-1 or res5==-1: 
+            return -1
+        else:
+            return 0
+
+    def run(self):
+
+        ROOT.gROOT.Reset() 
+        ROOT.gStyle.SetStatW(0.19)
+        ROOT.gStyle.SetStatFontSize(0.03)
+        ROOT.gStyle.SetOptStat(111110)
+
+        filePar=self.getFilePar()
+        if filePar==-1:
+            self.logger.error('getFilePar() failed')
+            return
+
+        
+        if filePar.find('Photons')>=0:
+            return self.doPhotons(filePar)
+            
+        if filePar.find('Electrons')>=0:
+            return self.doElectrons(filePar)
+            
+        if filePar.find('Top')>=0 or filePar.find('top')>=0:
+            return self.doTop(filePar)
+
+        # if filePar.find('Zee')>=0:
+        #    return self.doZee(filePar)
+
+        # if filePar.find('H2e2mu')>=0:
+        #    return self.doH2e2mu(filePar)
+
+        
+            
+
+
+#a=Truth(logging.INFO)
+#a.run()
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_check.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_check.py
new file mode 100644
index 00000000000..98490e7a0a3
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_check.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python
+
+import os,commands,sys,logging,imp
+import traceback
+
+########################################################
+import CaloRecEx_HistoComparison
+import CaloRecEx_Truth
+import CaloRecEx_extractRec
+import CaloRecEx_memleak
+import myperfmon
+########################################################
+
+logLevel=logging.INFO
+logger = logging.getLogger('CaloRecEx_check')
+hdlr = logging.FileHandler('CaloRecEx_check.log',"w")
+formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+hdlr.setFormatter(formatter)
+logger.addHandler(hdlr)
+logger.setLevel(logLevel)
+
+com = "cat env.log|grep AtlasVersion | cut -d= -f2| tail -n1"
+res,release=commands.getstatusoutput(com)
+
+com = "cat env.log|grep AtlasArea | cut -d= -f2| tail -n1"
+res,branch=commands.getstatusoutput(com)
+
+com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1 | awk '{print $1}'"
+res,testName=commands.getstatusoutput(com)
+if res!=0 :
+    logger.error(testName.strip())
+    sys.exit(1)
+
+name=testName+'Checks.py';
+print name
+mod = imp.load_source("tests",name)
+import tests
+
+file = open('./checks.html','w')
+txt='<html><head><title>RTT results for '+testName.strip()+'</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head><body><center><h1>RTT results for '+testName.strip()+'</h1></center>'
+txt+='<br><br><br><br>'
+txt+='<center>'+'Branch : '+branch+'<br>'
+txt+='Release : '+release+'<br><br><br>'
+
+if tests.doHistoComparison==True:
+    txt+='<a href="Comparison.html">Comparison plots</a>'
+
+if tests.doTruth==True:
+    txt+='<br><a href="CaloRecEx_Truth.html">Truth plots</a>'
+
+if tests.doextractRec==True:
+    txt+='<br><a href="Alert.txt">CPU times warning</a>'
+    
+if tests.doPerfMon==True:
+    txt+='<br><a href="out.perfmon.pdf">Perfmon plots</a>'
+
+
+txt+='</center></body></html>'
+file.write(txt)
+file.close()
+
+
+logger.info('============= CHECKS BEGIN =================')
+
+    
+# Comparison plots
+if tests.doHistoComparison==True:
+    logger.info('---- Histograms comparison ----')
+    try: 
+       a=CaloRecEx_HistoComparison.HistosComparison(logger,logging.info)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of CaloRecEx_HistoComparison failed')
+       res=10
+    if res==0:
+        logger.info('Histograms comparison done successfully')
+    else:
+        logger.info('Histograms comparison failed')
+
+# Truth
+if tests.doTruth==True:
+    logger.info('---- Truth ----')
+    try:
+       a=CaloRecEx_Truth.CaloRecEx_Truth(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of CaloRecEx_Truth failed')
+       res=10
+
+    if res==0:
+        logger.info('CaloRecEx_Truth done successfully')
+    else:
+        logger.info('CaloRecEx_Truth failed')
+
+# CPU time
+if tests.doextractRec==True:
+    logger.info('---- CPU time ----')
+    try: 
+       a=CaloRecEx_extractRec.CaloRecEx_extractRec(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of CaloRecEx_extractRec failed')
+       res=10
+
+    if res==0:
+        logger.info('CaloRecEx_extractRec done successfully')
+    else:
+        logger.info('CaloRecEx_extractRec failed')
+
+# Memory leaks
+if tests.doMemLeak==True:
+    logger.info('---- Memory leak ----')
+    try:
+       a=CaloRecEx_memleak.CaloRecEx_memleak(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of CaloRecEx_memleak failed')
+       res=10
+
+    if res==0:
+        logger.info('CaloRecEx_memLeak done successfully')
+    else:
+        logger.info('CaloRecEx_memLeak failed')
+
+
+# Perf Mon
+if tests.doPerfMon==True:
+    logger.info('---- PerfMon ----')
+    try:
+       a=myperfmon.myperfmon(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of PerfMon failed')
+       res=10
+
+    if res==0:
+        logger.info('PerfMon done successfully')
+    else:
+        logger.info('PerfMon failed')
+
+
+
+logger.info('============= CHECKS END =================')
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_checkAODESDcontent.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_checkAODESDcontent.py
new file mode 100644
index 00000000000..303ba1935fb
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_checkAODESDcontent.py
@@ -0,0 +1,77 @@
+#!/usr/bin/python
+
+import commands,sys,os,logging
+
+class CaloRecEx_checkAODESDcontent:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('AODESD')
+            hdlr = logging.FileHandler('checkAODESD.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+
+    def run(self):
+        res1,output=commands.getstatusoutput("./checkFile.py -d ESD.pool.root >& ESDAOD.log")
+        if res1!=0:
+            self.logger.error('problem to run checkFile.py on ESD.pool.root')
+        res2,output=commands.getstatusoutput("./checkFile.py -d AOD.pool.root >> ESDAOD.log")
+        if res2!=0:
+            self.logger.error('problem to run checkFile.py on AOD.pool.root')
+
+        if res1!=0 and res2!=0:
+            self.logger.error('no files to check')
+            return -1
+        
+        com = "cat MYRTTINFOS.txt" + "|grep BEGIN_RTTINFO | cut -d= -f2| tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error(testName)
+            return -1
+        reflog='ref'+testName.strip()+'AODESD.log'
+
+        com='wget http://cern.ch/CaloRTT/'+reflog
+        res,out=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error(out)
+            return -1
+
+        try:
+            f=open(log,'r')
+            fclose(log)
+        except:
+            self.logger.error(log+' not found')
+            return -1
+        
+
+        keysList=[]
+        file = open(reflog,'r')
+        for line in file:
+            t=line.split()
+            if len(t)==8 and t[1]=='kb' and t[3]=='kb' and t[5]=='kb':
+                keysList.append(t[7])
+        file.close()
+
+        for k in keysList:
+            com1='grep '+k+' '+log+' | grep -v Tree'
+            res1,out1=commands.getstatusoutput(com1)
+            if res1!=0:
+                self.logger.warning(k+' NOT FOUND')
+                continue
+            tmpNew=out1.split()
+
+            com2='grep '+k+' '+reflog+' | grep -v Tree'
+            res2,out2=commands.getstatusoutput(com2)
+            if res2!=0:
+                continue
+            tmpRef=out2.split()
+
+            if float(tmpNew[4]) > float(tmpRef[4]):
+                self.logger.warning(k +' is higher : '+'NEW='+tmpNew[4]+'/'+'REF='+tmpRef[4]+' (kb)')
+                
+        return 0
+        
+    
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_dump2.C b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_dump2.C
new file mode 100755
index 00000000000..0f69e8cc5d0
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_dump2.C
@@ -0,0 +1,77 @@
+void CaloRecEx_dump2()
+{
+dumpFile("ntuple.root");
+
+}
+
+
+void dumpFile (TString theFile)
+{
+  
+// simplistic root macro to dump variables from combined ntuple
+// to allow simle integrity checks
+
+
+// change default style 
+// round filled marker
+
+gStyle->SetMarkerStyle(8);
+gStyle->SetStatW(0.4);
+//gStyle->SetStatFontSize(60);
+gStyle->SetStatFontSize(0.12);
+gStyle->SetLabelSize(0.06);
+gStyle->SetOptStat(111110);
+gStyle->SetCanvasBorderMode(0);
+gStyle->SetPadBorderMode(0);
+gStyle->SetPadColor(0);
+gStyle->SetCanvasColor(0);
+gStyle->SetTitleColor(0);
+gStyle->SetStatColor(0);
+
+// only 3 digits
+TGaxis::SetMaxDigits(3);
+
+//gStyle->SetNoExponent(false);
+//myHisto->GetYaxis()
+
+
+//open file
+TFile f(theFile);
+
+//f.cd("CBNT") ;
+// this is needed only if pure numeric ttree identifier is used
+//TTree *t3333=(TTree*) gDirectory->Get("t3333");
+TTree *t3333=(TTree*) gDirectory->Get("CollectionTree");
+
+//use default style
+t3333->UseCurrentStyle();
+
+TFile *hfile = new TFile("CBNTDump.hist","RECREATE","CBNT dump");
+
+TH1F *h1 = new TH1F("h1", "MemVSize histo",1,0,5);
+
+
+TCanvas *MyC5 = new TCanvas("MyC5","CBNT Dump 5",1);
+
+
+
+
+MyC5->Divide(2,2);
+MyC5->cd(1);
+t3333->Draw("MemVSize:IEvent","MemVSize>0");
+t3333->Draw("MemVSize:IEvent>>h1","MemVSize>0");
+hfile->Write();
+
+MyC5->cd(2);
+t3333->Draw("MemRSS:IEvent","MemVSize>0");
+MyC5->cd(3);
+t3333->Draw("TimeTotal/1000");
+MyC5->cd(4);
+t3333->Draw("(TimeTotal-TimeSum)/1000");
+
+MyC5->Print("CBNTdump.ps)");
+ 
+if (hfile) hfile->Close();
+
+}
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_extractRec.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_extractRec.py
new file mode 100644
index 00000000000..924e6ce1c31
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_extractRec.py
@@ -0,0 +1,400 @@
+#!/usr/bin/env python
+
+
+import os, sys, commands,getopt, datetime
+import stat,logging
+import string
+
+class CaloRecEx_extractRec:
+
+    def __init__(self,log,logLevel):   
+
+        
+        self.loggerAlert = logging.getLogger('Alert')
+        self.hdlrAlert = logging.FileHandler('Alert.txt',"w")
+        formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+        self.hdlrAlert.setFormatter(formatter)
+        self.loggerAlert.addHandler(self.hdlrAlert)
+        self.loggerAlert.setLevel(logLevel)
+
+        if log=='':
+            self.loggerInfo = logging.getLogger('Info')
+            self.hdlrInfo = logging.FileHandler('Info.txt',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            self.hdlrInfo.setFormatter(formatter)
+            self.loggerInfo.addHandler(self.hdlrInfo)
+            self.loggerInfo.setLevel(logLevel)
+        else:
+            self.loggerInfo = log
+        
+        self.tests=["Photons_calib0_csc11_007062_singlepart_gamma_E50","Electrons_calib0_csc11_007070_singlepart_e_E5","Photons_calib0_csc11_007080_singlepart_gamma_E5","Photons_calib0_csc11_007085_singlepart_gamma_E500","top_calib1_csc11_005200_T1_McAtNlo_Jimmy","Electrons_calib1_csc11_007061_singlepart_e_E100","Photons_calib1_csc11_007063_singlepart_gamma_E100","top_valid1_005200_T1_McAtNlo_Jimmy","muons_physics_cosmics","MinBias_physics_MinBias"]
+        
+        # from auditors svc
+        self.CaloList=['LAr37ClusterMaker','LAr33ClusterMake','LArSWClusterMaker','LAr35ClusterMaker','CBNT_TileCell','CaloSWClusterMaker','CBNT_CaloCluster','CBNT_CaloCluster37','CBNT_CaloInfo','CBNT_CaloCluster35','CaloCellMaker','CaloTopoClusterMaker','TruthCone4Jets','TruthConeJets','CBNT_LArCell','CaloCell2TopoClusterMapper','EMTopoClusterMaker','TruthKtJets','TowerMaker','KtJets','ConeJets','Cone4Jets','METAlg']
+        # from personal chronosvc
+        self.extraCaloList=['CmbTowerBldr.TileCmbTwrBldr','CaloCellMaker_CaloCellContainerChecke','CaloCellMaker_CaloCellContainerFinali','CmbTowerBldr.FCalCmbTwrBldr','CaloCellMaker_LArCellBuilderLAr','CaloCellMaker_TileCellBuilder','CmbTowerBldr.LArCmbTwrBldr','TowerMaker.LArTowerBuilder','CmbTowerBldr.LArCmbTwrBldrChronoCellLoop','CmbTowerBldr.LArCmbTwrBldrChronobuild','TowerMaker.LArTowerBuilderChronobuild','TowerMaker.LArTowerBuilderChronoCellLoop']
+        self.debugLevel=0
+        # in sec
+        self.diffTime=0.05
+        
+        #self.emails=['bernardet@cppm.in2p3.fr']
+        self.emails=[]
+        self.wwwemails="http://cern.ch/CaloRTT/CaloRecEx_mails2.txt"
+        self.testName="CaloRecEx"
+        # if type = 1 use of the list above for the algo
+        self.type=0
+        self.typePerso=0
+        # Size of RDO.pool.root = XXX ko         
+
+
+        # release, time info
+        self.release=""
+        self.branch=""
+        self.date=""
+
+        self.mailSubjectProblem=""
+        self.mailSubjectReport=""
+        #self.switchoffRTTpart=True
+        #####################
+        self.alertMess=""
+        self.alertMessOk=False
+        self.alertReportOk=True
+        self.checkFile=0
+
+
+
+            
+####  CPU Time
+
+    def extractCPUTimeInitializeAll(self,file,type):
+
+        tmp=[]
+        if type !=1:
+            com="grep \"Time User\" " + file + " | grep initi"
+
+            self.loggerInfo.debug(com)
+        
+            res=commands.getoutput(com)
+            tmp= res.splitlines() 
+        else:
+            for i in self.CaloList:
+                com="grep \"Time User\" " + file + " | grep \"\<" +i+":initi\""
+                self.loggerInfo.debug(com)
+                res=commands.getoutput(com)
+                tmp += res.splitlines()
+            
+        return tmp
+            
+    def extractCPUTimeInitializeAlgo(self,file, algo):
+
+        com="grep \"Time User\" " + file + " | grep initi" + " | grep  '^" + algo +"' | cut -d= -f2 | awk '{print $1\" \"$2}'"
+
+        #print com
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+    def extractCPUTimeExecuteAll(self,file,type):
+    
+        tmp=[]
+        if type !=1:
+            com="grep \"Time User\" " + file + " | grep execute"
+
+            self.loggerInfo.debug(com)
+        
+            res=commands.getoutput(com)    
+            tmp= res.splitlines() 
+        else:
+            for i in self.CaloList:
+                com="grep \"Time User\" " + file + " | grep \"\<" +i
+                self.loggerInfo.debug(com)
+                res=commands.getoutput(com)
+                tmp += res.splitlines()
+
+        return tmp
+
+
+    def extractCPUTimeExecuteAlgo(self,file, algo):
+
+        com="grep \"Time User\" " + file + " | grep  '\<" + algo +"' | cut -d= -f2 | awk '{print $1\" \"$2}' "
+        self.loggerInfo.debug(com)
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+
+
+    def extractNbEventsExecuteAlgo(self,file, algo):
+
+        com="grep \"Time User\" " + file + " | grep  '\<" + algo +"'| cut -d\# -f 2 | cut -d = -f 2 "
+
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+
+
+    def getNbEvents(self,file):
+
+        com="grep \"INFO Total Virtual memory\" " + file +" | wc -l"
+
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+    def compareCPUTimeInitialize(self,file,reffile,type):
+        # 
+        CPUTimeRef=[]
+        alg=[]
+        CPUTimeRef=self.extractCPUTimeInitializeAll(reffile,type)
+        for i in CPUTimeRef:
+            t=i.lstrip()
+            tmp=t.split(" ")
+            alg.append(tmp[0])
+        #print alg
+        for j in alg:
+            tref=self.extractCPUTimeInitializeAlgo(reffile,str(j))
+            tnew=self.extractCPUTimeInitializeAlgo(file,str(j))
+            if len(tnew)==0:
+                    mess=j+" not found in " + file
+                    self.loggerInfo.info(mess)
+                    continue
+                
+            #print j,tref,tnew
+            trefUnity=self.CPUTimeUnity(str(tref[0]))
+            tnewUnity=self.CPUTimeUnity(str(tnew[0]))
+            #print j,trefUnity,tnewUnity
+            ttnew=tnew[0].split('[')
+            ttref=tref[0].split('[')
+            ttref2=self.convertCPUTime(float(ttref[0]),trefUnity)      
+            ttnew2=self.convertCPUTime(float(ttnew[0]),tnewUnity)
+            #print j,ttref2,ttnew2
+            if ttnew2-ttref2 > self.diffTime:
+                mess="WARNING : "+j+" REF : "+str(ttref[0])+self.CPUTimeUnity(str(tref[0]))+" NOW : "+str(ttnew[0])+self.CPUTimeUnity(str(tnew[0]))
+                self.loggerInfo.info(mess)
+                self.loggerAlert.info(mess)
+            else:
+                mess="GOOD : "+j+" REF : "+str(ttref[0])+self.CPUTimeUnity(str(tref[0]))+" NOW : "+str(ttnew[0])+self.CPUTimeUnity(str(tref[0]))
+                self.loggerInfo.info(mess)
+            
+            
+        return
+
+      
+    def convertCPUTime(self,time,unity):
+       
+        if unity=="min":
+            return time*60
+        elif unity=="ms": 
+            return time*0.001
+        elif unity=="us":
+            return time*0.000001
+        else:
+            return time
+
+    def CPUTimeUnity(self,string):
+        
+        tmp=string.split('[')
+        tmp2=tmp[1].split(']')
+        return tmp2[0]
+
+    def compareCPUTimeExecute(self,file,reffile,type):
+        # 
+        CPUTimeRef=[]
+        alg=[]
+        CPUTimeRef=self.extractCPUTimeExecuteAll(reffile,type)
+        for i in CPUTimeRef:
+            t=i.lstrip()
+            tmp=t.split(" ")
+            alg.append(tmp[0])
+        for j in alg: 
+                tref=self.extractCPUTimeExecuteAlgo(reffile,str(j))
+                nbEvtRef=self.extractNbEventsExecuteAlgo(reffile,str(j))
+                tnew=self.extractCPUTimeExecuteAlgo(file,str(j))
+                nbEvtNew=self.extractNbEventsExecuteAlgo(file,str(j))
+                #print j," ", tref,"  ",tnew
+                #print 'KARIM2 ',j," ",nbEvtRef ,"  ",nbEvtNew
+                if len(tnew)==0:
+                    mess=j+" not found in " + file
+                    self.loggerInfo.info(mess)
+                    continue
+                
+                # convert en secondes
+                trefUnity=self.CPUTimeUnity(str(tref[0]))
+                tnewUnity=self.CPUTimeUnity(str(tnew[0]))
+                ttnew=tnew[0].split('[')
+                ttref=tref[0].split('[')
+                ttref2=self.convertCPUTime(float(ttref[0]),trefUnity)      
+                ttnew2=self.convertCPUTime(float(ttnew[0]),tnewUnity)
+
+                if int(nbEvtRef[0])>0:
+                    normtref=float(ttref2)/float(nbEvtRef[0])
+                else:
+                    self.loggerInfo.warning("Ref "+j+" "+nbEvtRef[0])
+                if int(nbEvtNew[0])>0:
+                    normtnew=float(ttnew2)/float(nbEvtNew[0])
+                else:
+                    self.loggerInfo.warning("New "+j+" "+nbEvtNew[0])
+
+                if int(nbEvtRef[0])>0 and int(nbEvtNew[0])>0: 
+                    if normtnew-normtref > self.diffTime:
+                        mess="WARNING : "+j+" REF : "+str(normtref)+" s "+" NOW : "+str(normtnew)+" s "+ "  (per event)"
+                        self.loggerInfo.info(mess)
+                        # alert
+                        self.loggerAlert.info(mess)
+                    else:
+                        mess="GOOD : "+j+" REF : "+str(normtref)+" s "+" NOW : "+str(normtnew)+" s"+" (per event)"
+                        self.loggerInfo.info(mess)
+                else:
+                   mess="WARNING : can not check "+j
+                   self.loggerInfo.info(mess) 
+        return
+
+
+    def logExtract(self,file,chain):
+
+        com="egrep \""+chain + "\"  "  + file
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+
+    def extractLog(self,log):
+
+
+        com="wc -l "+log +" | awk '{print $1}'"
+        res=commands.getoutput(com)    
+        res2=res.splitlines()
+        nbAllLines=int(res2[0])
+
+        #print nbAllLines
+        
+        com="grep ^BEGIN_RTTINFO "+log
+        res=commands.getoutput(com)    
+        res2=res.splitlines()
+        
+        names=[]
+        for i in res2:
+            name=i.split('=')
+            name[1]=name[1].strip()
+            names.append(name[1])
+            
+        for i in range(len(names)):
+            #print i,names[i]
+            #com="grep -n BEGIN_RTTINFO="+names[i]+" "+log+" | cut -d: -f1"
+            com="grep -n \"^BEGIN_RTTINFO = "+names[i]+"\" "+log+"| cut -d: -f1"
+            n1=commands.getoutput(com)
+            try:
+                #com="grep -n BEGIN_RTTINFO="+names[i+1]+" "+log+" | cut -d: -f1"
+                com="grep -n \"^BEGIN_RTTINFO = "+names[i+1]+"\" "+log+"| cut -d: -f1"
+                
+                n2=commands.getoutput(com)
+            except:
+                n2=nbAllLines
+            
+            nblines=int(n2)-int(n1)-1
+            #print nblines
+            newlog='./'+names[i]+".log"
+            #com="grep -A"+str(nblines)+" BEGIN_RTTINFO="+names[i]+" "+log +" >"+newlog
+            com="grep -A"+str(nblines)+" \"^BEGIN_RTTINFO = "+names[i]+"\" "+log +" >"+newlog
+            os.system(com)
+        return names
+
+
+###########
+
+    def run(self):
+        f = open("MYRTTINFOS.txt")
+        testname = f.readlines()[0].split('=')[1].rstrip('\n')
+        f.close()
+        l = testname.split('_')
+        l.pop(0)
+        l.append('log')
+        log = string.join(l,'_')
+        #log=commands.getoutput("ls Calo*Ex_RTT*_log")
+        names=self.extractLog(log)
+	
+        print names
+
+        for test in names:
+            com="rm "+"./resultats.txt"
+            commands.getoutput(com)    
+
+            com = "cat MYRTTINFOS.txt|grep BEGIN_RTTINFO | cut -d= -f2| tail -n1"
+            jobopt=commands.getoutput(com)
+            self.loggerInfo.info('Test name : '+jobopt)
+            found=0
+            for opt in self.tests:
+                if opt==jobopt.strip():
+                    found=1
+                    break	
+
+            if found==0:
+                self.loggerInfo.info("test not in dict !!!")
+                return -1
+
+            self.reflog='ref'+jobopt.strip()+'.log'
+            com='wget http://cern.ch/CaloRTT/'+self.reflog
+            print com
+            os.system(com)
+
+            try:
+                file = open(self.reflog)
+                file.close()
+            except IOError:
+                self.loggerInfo.info(self.reflog+' not found')
+                return -1
+
+            # date
+            self.date=str(datetime.datetime.now().strftime("%Y-%m-%d %X"))
+            self.loggerInfo.info(self.date)
+
+            com = "cat env.log|grep AtlasVersion | cut -d= -f2| tail -n1"
+            self.release=commands.getoutput(com)
+            self.branch="Dev"
+
+            self.mailSubjectProblem="\"[RTT test, "+jobopt+","+self.branch+","+self.release+"] : CaloRecEx_extractRec problem \""
+            self.mailSubjectReport="\"[RTT test, "+jobopt+","+self.branch+","+self.release+"] : CaloRecEx_extractRec report \""
+
+            mess="Reference log = " + self.reflog
+            self.loggerInfo.info(mess)
+            mess="Log to check = "+log
+            self.loggerInfo.info(mess)
+
+     
+            self.loggerInfo.info("********************************")
+            self.loggerInfo.info("CHECK STATUSCODE")
+            
+            res=self.logExtract(log,"\|*\| lib*")
+            for i in res:
+                self.loggerInfo.info(str(i))     
+            self.loggerInfo.info("********************************")
+
+
+
+            
+            self.loggerInfo.info("********************************")
+            
+            self.loggerInfo.info("CHECK INITIALIZE TIME")
+            
+            self.compareCPUTimeInitialize(log,self.reflog,self.type)
+            
+            self.loggerInfo.info("********************************")
+            
+            self.loggerInfo.info("CHECK EXECUTE TIME")
+            
+            self.compareCPUTimeExecute(log,self.reflog,self.type)
+                 
+            self.loggerInfo.info("********************************")
+
+            return 0
+#a=extractRec()
+#a.run()
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_memleak.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_memleak.py
new file mode 100644
index 00000000000..40887b7916c
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_memleak.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python
+
+import commands,sys,os,logging
+
+
+class CaloRecEx_memleak:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('CaloRecEx_memleak')
+            hdlr = logging.FileHandler('CaloRecEx_memleak.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+
+    def run(self):
+
+        log=commands.getoutput("ls Calo*Ex_RTT*_log")
+        try:
+            f=open(log,'r')
+            f.close()
+        except:
+            self.logger.error(log+' not found')
+            return -1
+        
+        com='grep \"only second half of the job\" '+log+'| grep INFO'
+        res,out=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error(out)
+            return -1
+
+        tmp=out.split('only second half of the job:')
+        tmp2=tmp[1].strip().split('MByte/event')
+        if float(tmp2[0].strip())>0.1:
+            self.logger.warning('MEM LEAK ! :'+tmp[1].strip())
+            return -1
+        return 0
+        
+    
+                
+#a=memleak('',logging.INFO)
+#a.run()
+    
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runMacros2.C b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runMacros2.C
new file mode 100644
index 00000000000..c90055a4c75
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runMacros2.C
@@ -0,0 +1,20 @@
+
+#include "TSystem.h"
+
+void CaloRecEx_runMacros2()
+{
+  int nbTests=2;
+  string macros[]={"CaloRecEx_dump2.C","CaloRecEx_runPython2.C"};
+
+  ofstream chkfile("CaloRecEx_runMacros2.txt",ios::out);	
+  
+  for(int i=0;i<nbTests;i++)
+    {
+      string com;
+      chkfile << "Run " << macros[i] << std::endl;
+      com="root.exe -b -q "+macros[i];
+      gSystem->Exec(com.c_str());
+      chkfile << "Run " << macros[i] << " Done." << std::endl;
+    }
+  chkfile.close();
+}
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runPython2.C b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runPython2.C
new file mode 100644
index 00000000000..ec61268437d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_runPython2.C
@@ -0,0 +1,24 @@
+
+#include "TSystem.h"
+
+void CaloRecEx_runPython2()
+{
+  int nbTests=1;
+  string macros[]={"CaloRecEx_check.py"};
+  ofstream chkfile("CaloRecEx_runPython2.txt",ios::out);	
+  std::cout << "LD_LIBRARY_PATH is " << gSystem->Getenv("LD_LIBRARY_PATH") << std::endl;
+  std::cout << "PATH is " << gSystem->Getenv("PATH") << std::endl;
+
+  for(int i=0;i<nbTests;i++)
+    {
+      string com;
+      chkfile << "Run " << macros[i] << std::endl;
+      com="python "+macros[i];
+      gSystem->Exec(com.c_str());
+      chkfile << "Run " << macros[i] << " Done." << std::endl;
+    }
+  chkfile.close();
+
+}
+
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_topOptions.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_topOptions.py
new file mode 100755
index 00000000000..41a06ddfd28
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_topOptions.py
@@ -0,0 +1,92 @@
+#example of personal topOptions
+#
+# to use it  
+# athena >! athena.log
+#  ( myTopOptions.py is defaulted through jobOptions.py soft link)
+# 
+# see RecExCommon/RecExCommon_flags.py for more available flags
+#
+
+# readG3 and AllAlgs needs be set before the include, since several
+# secondary flags are configured according to that one
+#
+# readG3=True # true if read g3 data
+# AllAlgs = False # if false, all algorithms are switched off by defaults 
+# doiPatRec = False
+
+from RecExConfig.RecFlags import rec
+from RecExConfig.RecAlgsFlags import recAlgs
+from MuonRecExample.MuonRecFlags import muonRecFlags
+rec.doWriteESD=False
+rec.doWriteTAG=False
+rec.doWriteAOD=False
+
+rec.doMuon=False
+rec.doMuonCombined=False
+
+recAlgs.doTrackRecordFilter=False
+rec.doTrigger=False
+#obsolete doAODLVL1=False
+rec.doAOD=False
+#doTruth=False
+
+doMuid=False
+
+muonRecFlags.doMoore=False
+muonRecFlags.doMuonboy=False
+recAlgs.doMuGirl=False
+doMuonIdCombined=False
+doMuonIdStandalone=False
+recAlgs.doMuTag=False
+
+doTopoClusterCBNT=True
+
+rec.CBNTAthenaAware=True
+
+recAlgs.doMissingET=False
+
+
+#PoolRDOInput=[ "/afs/cern.ch/atlas/offline/data/testfile/q02initialprod.0001.H_2e2mu.q02dig_1004.etacut.0001_extract.pool.root" ]
+
+
+jp.AthenaCommonFlags.EvtMax=5
+
+include ("RecExCond/RecExCommon_flags.py")
+
+# Flags that are defined in python are best set here
+# switch off ID and muons
+DetFlags.ID_setOff()
+DetFlags.Muon_setOff()
+
+
+#jobproperties.Global.DetDescrVersion=''
+
+# number of event to process
+# include my own algorithm(s)
+# include my own algorithm
+# UserAlgs=[ "MyPackage/MyAlgorithm_jobOptions.py" ] 
+
+# no jet
+# doJetRec=False
+
+# main jobOption
+include ("RecExCommon/RecExCommon_topOptions.py")
+
+# user property modifiers should be at the end to overridde all defaults
+# TrackParticleTruthMaker.Enable=False 
+
+# very very temporary
+# InDetPrepRawDataTruthMaker=Algorithm("InDetPrepRawDataTruthMaker")
+# InDetPrepRawDataTruthMaker.Enable=False
+
+#print memory usage for all events (in case of memory leak crash)
+#CBNT_Audit.nEventPrintMem=999999
+
+MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M"
+
+print "RTTINFO = 1002_H_2e2mu_q02dig_1004"
+
+
+#from __main__ import AtlasTrackingGeometrySvc
+#AtlasTrackingGeometrySvc.AssignMaterialFromCOOL = False
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecOutputItemList_jobOptions.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecOutputItemList_jobOptions.py
new file mode 100644
index 00000000000..da5dd2dabed
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecOutputItemList_jobOptions.py
@@ -0,0 +1,148 @@
+#**************   ESD list  ************************************************
+
+from AthenaCommon.JobProperties import jobproperties
+
+CaloESDList = []
+
+CaloESDList += [ "CaloCellContainer#AllCalo" ]
+
+# compactify calo cell
+from CaloTools.CaloToolsConf import CaloCompactCellTool
+svcMgr.ToolSvc += CaloCompactCellTool()
+
+# add explicitly MBTS cells and trigger output to ESD
+CaloESDList += [ "TileCellContainer#MBTSContainer" ]
+CaloESDList += [ "TileTTL1Container#TileTTL1MBTS" ]
+
+# explicitly list of CaloCluster related keys
+CaloClusterItemList=[]
+CaloClusterKeys=[]
+
+CaloClusterKeys+=["CaloCalTopoCluster"]
+CaloClusterKeys+=["CombinedCluster"]
+#CaloClusterKeys+=["EMTopoCluster430"]
+CaloClusterKeys+=["EMTopoSW35"]
+
+# reshuffl em 
+CaloClusterKeys+=["LArClusterEM"]
+
+CaloClusterKeys+=["LArClusterEM7_11Nocorr"]
+#CaloClusterKeys+=["egClusterCollection"] Move to eg output list
+#CaloClusterKeys+=["LArClusterEMSofte"]
+
+if rec.Commissioning():
+    # CaloClusterKeys += ["LArMuClusterCandidates","CaloTopoCluster","EMTopoCluster420","TileTopoCluster","MuonClusterCollection"]
+    CaloClusterKeys += ["MuonClusterCollection"]    
+
+for theKey in CaloClusterKeys:
+    CaloClusterItemList+=["xAOD::CaloClusterContainer_v1#"+theKey]
+    CaloClusterItemList+=["xAOD::CaloClusterAuxContainer_v1#"+theKey+"Aux."]
+    CaloClusterItemList+=["CaloClusterCellLinkContainer#"+theKey+"_links"]
+
+CaloESDList+=CaloClusterItemList
+logRecoOutputItemList_jobOptions.info('CaloClusterItemList = ')
+print CaloClusterItemList
+
+#CaloTowerContainer needed for jet->cell
+#FIXME
+CaloESDList += [ "CaloTowerContainer#CombinedTower" ]
+
+# LAr thinned digits
+CaloESDList += ["LArDigitContainer#LArDigitContainer_Thinned"]
+
+# LAr FEB error summary data 
+CaloESDList += ["LArFebErrorSummary#LArFebErrorSummary"]
+
+# LAr thinned digits for LArMuId
+if jobproperties.Beam.beamType() == "cosmics" :
+    CaloESDList += ["LArDigitContainer#LArDigitContainer_IIC"]
+# LAr thinned digits from EM clusters
+CaloESDList += ["LArDigitContainer#LArDigitContainer_EMClust"]
+
+# LAr noisy Feb/PA summary
+CaloESDList += ["LArNoisyROSummary#LArNoisyROSummary"]
+
+# Tile filtered digits, muons reconstructed offline or inside ROD
+CaloESDList += ["TileDigitsContainer#TileDigitsFlt"]
+CaloESDList += ["TileRawChannelContainer#TileRawChannelFlt"]
+CaloESDList += ["TileMuContainer#TileMuObj"]
+CaloESDList += ["TileL2Container#TileL2Cnt"]
+
+# Cosmic muons reconstructed with Tile muon fitter
+if jobproperties.Beam.beamType() == 'cosmics' or jobproperties.Beam.beamType() == 'singlebeam' :
+    CaloESDList +=["TileCosmicMuonContainer#TileCosmicMuonHT","TileCosmicMuonContainer#TileCosmicMuonMF"]
+
+
+#**************   AOD list  ************************************************
+
+#List of AOD moments: (copied from CaloClusterTopoGetter)
+
+AODMoments=["LATERAL"
+            ,"LONGITUDINAL"
+            ,"SECOND_R" 
+            ,"SECOND_LAMBDA"
+            ,"CENTER_MAG"
+            ,"CENTER_LAMBDA"
+            ,"FIRST_ENG_DENS"
+            ,"ENG_FRAC_MAX" 
+            ,"ISOLATION"
+            ,"ENG_BAD_CELLS"
+            ,"N_BAD_CELLS"
+            ,"BADLARQ_FRAC"
+            ,"ENG_POS"
+            ,"SIGNIFICANCE"
+            ,"CELL_SIGNIFICANCE"
+            ,"CELL_SIG_SAMPLING"
+            ,"AVG_LAR_Q"
+            ,"AVG_TILE_Q"
+            ,"EM_PROBABILITY"
+            ,"BadChannelList"
+            ]
+
+
+CaloAODList = []
+
+# cells 
+CaloAODList+=["CaloCellContainer#AODCellContainer"]
+
+# CaloClusters 
+CaloClusterItemList=[]
+CaloClusterKeys=[]
+
+
+CaloClusterKeys+=["CaloCalTopoCluster"]
+CaloClusterKeys+=["CombinedCluster"]
+#CaloClusterKeys+=["EMTopoCluster430"]
+CaloClusterKeys+=["EMTopoSW35"]
+
+#CaloClusterKeys+=["egClusterCollection"] Moved to eg output item list
+#CaloClusterKeys+=["LArClusterEMSofte"]
+
+
+
+for theKey in CaloClusterKeys: #Fixme .. Apply this only to TopoClusters?
+     CaloClusterItemList+=["xAOD::CaloClusterContainer_v1#"+theKey]
+     AuxListItem="xAOD::CaloClusterAuxContainer_v1#"+theKey+"Aux"
+     for moment in AODMoments:
+         AuxListItem+="."+moment
+         pass
+     if len(AODMoments)==0: AuxListItem+="." 
+     CaloClusterItemList+=[AuxListItem]
+
+# write the link only for egClusterColl
+#CaloClusterItemList+=["CaloClusterCellLinkContainer#egClusterCollection_links"]
+
+
+CaloAODList+=CaloClusterItemList
+
+CaloAODList+=["CaloClusterContainer#Tau1P3PPi0ClusterContainer"]
+
+# MBTS cells
+CaloAODList+=["TileCellContainer#MBTSContainer"]
+
+# muons in Tile
+CaloAODList+=["TileMuContainer#TileMuObj"]
+
+# LAr noisy Feb/PA summary
+CaloAODList +=  ["LArNoisyROSummary#LArNoisyROSummary"]
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib0_csc11_007070_singlepart_e_E5Checks.py b/Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib0_csc11_007070_singlepart_e_E5Checks.py
new file mode 100644
index 00000000000..e68d35b1581
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib0_csc11_007070_singlepart_e_E5Checks.py
@@ -0,0 +1,10 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=False
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib1_csc11_007061_singlepart_e_E100Checks.py b/Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib1_csc11_007061_singlepart_e_E100Checks.py
new file mode 100644
index 00000000000..e68d35b1581
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Electrons_calib1_csc11_007061_singlepart_e_E100Checks.py
@@ -0,0 +1,10 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=False
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Electrons_mc10_7TeV_107061_singlepart_e_E100Checks.py b/Calorimeter/CaloExample/CaloRecEx/share/Electrons_mc10_7TeV_107061_singlepart_e_E100Checks.py
new file mode 100644
index 00000000000..09520fdbfed
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Electrons_mc10_7TeV_107061_singlepart_e_E100Checks.py
@@ -0,0 +1,10 @@
+
+doHistoComparison=False
+doTruth=False
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=False
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.py b/Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.py
new file mode 100755
index 00000000000..3f01f02c38d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.py
@@ -0,0 +1,500 @@
+#!/usr/bin/env python
+
+import os,commands,sys,logging,math
+import ROOT
+import string
+
+class myHist:
+    def __init__(self,histName,histComment,histBins,histMinX,histMaxX,histFormula,histCondForm):
+        self.histName=histName
+        self.histComment=histComment
+        self.histMinX=histMinX
+        self.histMaxX=histMaxX
+        self.histFormula=histFormula
+        self.histCondForm=histCondForm
+        self.histBins=histBins
+        
+    def setHistName(self,name):
+        self.histName=name
+
+    def setHistComment(self,Comment):
+        self.histComment=Comment
+
+    def setHistFormula(self,form):
+        self.histFormula=form
+
+    def setHistCondForm(self,condform):
+        self.histCondForm=condform
+
+    def setHistXmin(self,minX):
+        self.HistMinx=minX
+
+    def setHistXmax(self,maxX):
+        self.histMaxX=maxX
+
+    def setHistName(self,name):
+        self.histName=name
+        
+    def setHistBins(self,nbins):
+        self.histBins=nbins
+
+    def getHistName(self):
+        return self.histName
+
+    def getHistComment(self):
+        return self.histComment
+
+    def getHistMinX(self):
+        return self.histMinX
+
+    def getHistMaxX(self):
+        return self.histMaxX
+
+    def getHistBins(self):
+        return self.histBins
+
+    def getHistFormula(self):
+        return self.histFormula
+
+    def getHistCondForm(self):
+        return self.histCondForm
+
+
+class HistosComparison:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('HistosComparison')
+            hdlr = logging.FileHandler('HistosComparison.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+        self.filePar="filePar"
+
+    def normH(self,m_hist):
+        if m_hist.GetEntries() != 0 :
+            scale = 1/m_hist.GetEntries()
+            m_hist.Scale(scale)
+        else:
+            self.logger.error("No entries in ",m_hist.GetTitle())
+
+
+    def getPar(self,name,par):
+        com="grep \"RTTParm_almostIdentical_"+name+"_"+par+"\"  "+self.filePar+ "| cut -d= -f2 | tail -n1"
+        print com
+        res,val=commands.getstatusoutput(com)
+        if val=="":
+            val="notfound"
+        if res!=0:
+            self.logger.error('Problem to get the par of '+name+' : '+max)
+            val="notfound"
+            
+        return val
+    
+    def makeHist(self,ROOTntuple):
+
+        ROOT.gStyle.SetMarkerStyle(8)
+        ROOT.gStyle.SetStatW(0.4)
+        ROOT.gStyle.SetStatFontSize(0.12)
+        ROOT.gStyle.SetLabelSize(0.06)
+        ROOT.gStyle.SetOptStat(111110)
+        ROOT.gStyle.SetCanvasBorderMode(0)
+        ROOT.gStyle.SetPadBorderMode(0)
+        ROOT.gStyle.SetPadColor(0)
+        ROOT.gStyle.SetCanvasColor(0)
+        ROOT.gStyle.SetTitleColor(0)
+        ROOT.gStyle.SetStatColor(0)
+        
+        # only 3 digits
+        ROOT.TGaxis.SetMaxDigits(3);
+
+        myCanvas = ROOT.TCanvas("myCanvas","Cluster",1)
+        myCanvas.Divide(2,8)
+
+        file=open('HistoComparison.txt','r')
+        hists=[]
+        n=0
+        for line in file:
+            i=+1
+            myCanvas.cd(n)
+            tmp=line.strip().split(',')
+
+            name2=""
+            for i in tmp[1]:
+                if i==' ':
+                    i='_'
+                if i=='(':
+                    i='z'
+                if i==')':
+                    i='z'
+                name2+=i
+
+            # check bin x
+            xmin=self.getPar(name2,"xmin")
+            if xmin=="notfound":
+                xmin=tmp[3]
+
+            xmax=self.getPar(name2,"xmax")
+            if xmax=="notfound":
+                xmax=tmp[4]
+            
+            print "XMIN =", xmin
+            print "XMAX =", xmax
+            
+            if len(tmp)==7:
+                h=myHist(tmp[0],tmp[1],tmp[2],xmin,xmax,tmp[5],tmp[6])
+            else:
+                h=myHist(tmp[0],tmp[1],tmp[2],xmin,xmax,tmp[5],'')
+            hists.append(h)
+        file.close()
+        
+        rootFile = ROOT.TFile(ROOTntuple,'READ')
+        mytree = ROOT.gDirectory.Get('CollectionTree')
+        mytree.UseCurrentStyle()
+
+        hfile = ROOT.TFile("Cluster.hist","RECREATE","Clusters hist")
+        for h in hists:
+            self.logger.debug(h.getHistName(),',',h.getHistComment(),',',h.getHistBins(),',',h.getHistMinX(),',',h.getHistBins(),',',h.getHistMaxX())
+            m_h = ROOT.TH1F(h.getHistName(),h.getHistComment(),int(h.getHistBins()),float(h.getHistMinX()),float(h.getHistMaxX()))
+            mytree.Draw(h.getHistFormula(),h.getHistCondForm())
+            mytree.Draw(h.getHistFormula()+'>>'+h.getHistName(),h.getHistCondForm())
+            self.normH(m_h)
+            hfile.Write()
+        
+        rootFile.Close()
+        
+    def getFilePar(self):
+        com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(testName)
+            return -1
+        
+        nTestName=''
+        for i in testName:
+            if i !=' ':
+                nTestName+=i;
+
+        filePar=nTestName+".par";
+        com="wget http://cern.ch/CaloRTT/"+filePar;
+        print com
+        res,out=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(out)
+            return -1
+        return filePar
+
+    def getFileRef(self):
+
+#lnk++
+        com = "cat env.log|grep AtlasArea"
+        res,tmp1=commands.getstatusoutput(com)
+        tmpFind="nightlies/"
+        i1 = string.find(tmp1,tmpFind)+len(tmpFind)
+        tmp2 = tmp1[i1:]
+        i2 = string.find(tmp2,"/")
+        branch2 = tmp2[:i2]
+        print " The branch is", branch2
+
+        file=open('Branch.txt','a')
+        file.write(""+branch2+'')
+        file.close()
+
+#lnk--
+
+        com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(testName)
+            return -1
+        
+        nTestName=''
+        for i in testName:
+            if i !=' ':
+                nTestName+=i;
+
+        fileRef='ref'+nTestName+".hist"
+#lnk+++ Added different branch2 (dev,devval,pcache) reference histos
+        com="wget http://cern.ch/CaloRTT/"+branch2+'/'+fileRef
+#lnk---
+        res,out=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(out)
+            return -1
+        return fileRef
+
+    def initHTMLDraw(self):
+        f=open("DrawHistos.html","w")
+        f.write("<html><head><title>Draw</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head>")
+        f.write("<body>")
+        f.close();
+        
+    def closeHTMLDraw(self):
+        f=open("DrawHistos.html","a")
+        f.write("</body>")
+        f.write("</html>")
+
+
+    def initHTMLComparison(self):
+        f=open("Comparison.html","w")
+        f.write("<html><head><title>Draw</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head>")
+        f.write("<body>")
+        f.close();
+        
+    def closeHTMLComparison(self):
+        f=open("Comparison.html","a")
+        f.write("</body>")
+        f.write("</html>")
+
+    def Draw(self,histFile):
+        self.initHTMLDraw()
+        file = ROOT.TFile(histFile)
+        for i in file.GetListOfKeys():
+            self.DrawHisto(i.ReadObj())
+        file.Close()
+        self.closeHTMLDraw()
+
+
+    def DrawHisto(self,hist):
+        f=open("DrawHistos.html","a")
+
+        tmp=hist.GetTitle()
+        name=""
+        for i in tmp:
+            if i==' ':
+                i='_'
+            if i=='(':
+                i='z'
+            if i==')':
+                i='z'
+            name+=i
+
+        ROOT.gStyle.SetOptStat(ROOT.kFALSE)
+        can=ROOT.TCanvas()
+ 
+        hist.Draw()
+
+        legend=ROOT.TLegend(0.7,0.7,0.89,0.85)
+        legend.SetTextFont(72)
+        legend.SetTextSize(0.04)
+ 
+        legend.AddEntry(hist,"NEW","l")
+        legend.Draw()
+ 
+        can.Modified()
+        can.Update()
+
+        epsname=name+".eps"
+        gifname=name+".gif"
+
+        can.SaveAs(epsname)
+
+        com1='pstopnm -ppm -xborder 0 -yborder 0 -portrait '+epsname
+        com2='ppmtogif '+epsname+'001.ppm >'+gifname
+        
+        os.system(com1)
+        os.system(com2)
+        
+        f.write("<CENTER><BR>")
+        f.write("Name : "+hist.GetTitle()+'<BR>')
+        f.write("<BR>")
+        f.write("<TABLE border=1>")
+        f.write("<TR>")
+        f.write("<TD>Entries</TD>")
+        f.write("<TD>"+str(hist.GetEntries())+'</TD>')
+        f.write("</TR>")      
+        f.write("<TR>")
+        f.write("<TD>Mean</TD>")
+        f.write("<TD>"+str(hist.GetMean())+'</TD>')
+        f.write("</TR>")        
+        f.write("<TR>")
+        f.write("<TD>RMS</TD>")
+        f.write('<TD>'+str(hist.GetRMS())+'</TD>')
+        f.write("</TR>")       
+        f.write("</TABLE>")       
+        f.write("<IMG SRC=\""+gifname+'\"><BR>')
+        f.write('<HR><BR>')
+        f.close()
+
+    def almostIdentical(self,hist,refhist):
+        f=open("Comparison.html","a")
+
+        tmp=hist.GetTitle()
+        name=""
+        for i in tmp:
+            if i==' ':
+                i='_'
+            if i=='(':
+                i='z'
+            if i==')':
+                i='z'
+            name+=i
+
+        ROOT.gStyle.SetOptStat(ROOT.kFALSE)
+        can=ROOT.TCanvas()
+
+        hist.SetLineColor(2)
+        hist.SetLineStyle(2)
+        hist.Draw()
+        if hist:
+            refhist.Draw("sames")
+        else:
+            refhist.Draw()
+
+        legend=ROOT.TLegend(0.7,0.7,0.89,0.85)
+        legend.SetTextFont(72)
+        legend.SetTextSize(0.04)
+ 
+        legend.AddEntry(hist,"NEW","l")
+        legend.AddEntry(refhist,"REF","l");
+        legend.Draw()
+ 
+        can.Modified()
+        can.Update()
+
+        epsname=name+".eps"
+        gifname=name+".gif"
+
+        can.SaveAs(epsname)
+
+        com1='pstopnm -ppm -xborder 0 -yborder 0 -portrait '+epsname
+        com2='ppmtogif '+epsname+'001.ppm >'+gifname
+        
+        os.system(com1)
+        os.system(com2)
+
+        restxt=open('Comparison.txt','a')
+        
+        f.write("<CENTER><BR>")
+        f.write("Name : "+hist.GetTitle()+'<BR>')
+        f.write("<BR>")
+        f.write("<TABLE border=1>")
+        f.write("<TR>")
+        f.write("<TD></TD>")
+        f.write("<TD>REF</TD>");
+        f.write("<TD>NEW</TD>")
+        f.write("</TR>")
+        
+        f.write("<TD>Entries</TD>")
+        f.write("<TD>"+str(refhist.GetEntries())+'</TD>')
+        f.write("<TD>"+str(hist.GetEntries())+'</TD>')
+        f.write("</TR>")      
+        f.write("<TR>")
+        f.write("<TD>Mean</TD>")
+        f.write("<TD>"+str(refhist.GetMean())+'</TD>')
+        f.write("<TD>"+str(hist.GetMean())+'</TD>')
+        f.write("</TR>")        
+        f.write("<TR>")
+        f.write("<TD>RMS</TD>")
+        f.write('<TD>'+str(refhist.GetRMS())+'</TD>')
+        f.write('<TD>'+str(hist.GetRMS())+'</TD>')
+        f.write("</TR>")       
+        f.write("</TABLE>")       
+        f.write("<IMG SRC=\""+gifname+'\"><BR>')
+
+        com="grep \"RTTParm_almostIdentical_"+name+ " \"  "+self.filePar+ "| cut -d= -f2 | tail -n1"
+        res,max=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error('Problem to the par of '+name+' : '+max)
+            return -1
+
+        dA=0.
+        A=0.
+        for k  in range(0,hist.GetNbinsX()+1):
+            dA += math.fabs(float(hist.GetBinContent(k) - refhist.GetBinContent(k)))
+            A += hist.GetBinContent(k)
+
+        if (A > 0):
+            dA = dA / A;
+
+  
+        restxt.write('&Sigma;(|&Delta;A|)/&Sigma;A is '+str(dA)+' (cut is '+str(max)+')\n')
+        f.write("<BR>")
+        f.write('&Sigma;(|&Delta;A|)/&Sigma;A is '+str(dA)+' (cut is '+str(max)+')\n')
+        f.write("<BR>")
+
+        if ( dA <= float(max) ):
+            restxt.write("TEST OK\n")
+            restxt.write("###################################\n")
+            f.write("<font color=\"green\">TEST OK<BR></font>")
+            f.write("<HR>")
+            f.write("</CENTER><BR>")
+            f.close()
+            restxt.close()
+            return 0
+        else:
+            restxt.write("TEST FAILED\n")
+            restxt.write("###################################\n")
+            f.write("<font color=\"red\">TEST FAILED</font><BR>")
+            f.write("<HR>")
+            f.write("</CENTER><BR>")
+            f.close()
+            restxt.close()
+            return -1
+
+    def testHistogram(self,hists,refhists,compType):
+        self.logger.info('---- testHistogram '+str(hists.GetTitle())+' ----')
+        if compType == "almostIdentical":
+            res=self.almostIdentical(hists,refhists)
+            return res
+        else:
+            self.logger.error('Comp type not known')
+            return -1
+        return 0
+
+    def histComparison(self,hist,refhist,compType):
+        self.initHTMLComparison()
+        fhists = ROOT.TFile(hist); 
+        frefhists = ROOT.TFile(refhist);
+
+        if len(fhists.GetListOfKeys())!=len(frefhists.GetListOfKeys()):
+            self.logger.warning('the ref and new file doesnt contain the same number of histograms')
+            self.Draw('Cluster.hist')
+            return 0
+            
+        if len(fhists.GetListOfKeys())==0:
+            self.logger.error('No histograms in the new file')
+            return -1
+
+        failed=[]
+        hists=[]
+        refHists=[]
+        for i in fhists.GetListOfKeys():
+            hists.append(i.ReadObj())
+        for i in frefhists.GetListOfKeys():
+            refHists.append(i.ReadObj())
+
+        for k in range(1,len(hists)):
+            if self.testHistogram(hists[k],refHists[k],compType)!=0:
+                failed.append(hists[k].GetName())
+                self.logger.error(hists[k].GetTitle()+' FAILED')
+            else:
+                self.logger.info(hists[k].GetTitle()+' OK')
+            self.logger.info('---- testHistogram DONE ----')
+            self.closeHTMLComparison()  
+        if len(failed)==0:
+            return 0
+        else:
+            return -1
+            
+    def run(self):
+        
+        self.filePar=self.getFilePar()
+        if self.filePar==-1:
+            self.logger.error('getFilePar() failed')
+            return -1
+
+        self.makeHist('ntuple.root')
+
+        fileRef=self.getFileRef()
+        if fileRef==-1:
+            self.logger.error('getFileRef() failed')
+            self.Draw('Cluster.hist')
+            return -1
+        
+        res=self.histComparison('Cluster.hist',fileRef,"almostIdentical");
+        return res
+#a=HistosComparison(logging.INFO)
+#a.run()
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.txt b/Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.txt
new file mode 100755
index 00000000000..ae390019add
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/HistoComparison.txt
@@ -0,0 +1,32 @@
+m_h1,Cluster E (GeV),50,0.,1000.,cl_et*cosh(cl_eta)/1000
+m_h2,Cluster E (GeV) - barrel,50,0.,1000.,cl_et*cosh(cl_eta)/1000,abs(cl_eta)<1.475
+m_h3,Cluster E (GeV) - endcap,50,0.,1000.,cl_et*cosh(cl_eta)/1000,abs(cl_eta)>=1.475
+m_h4,Cluster eta,40,-2.5,2.5,cl_eta
+m_h5,Cluster phi,25,-7.,7.,cl_phi
+m_h6,number of clusters,6,-.5,5.5,cl_nc
+m_h7,E frac. in Presampler - barrel,50,0.,1.,cl_eemb0/(cl_eemb0+cl_eemb1+cl_eemb2+cl_eemb3),abs(cl_eta)<1.475
+m_h8,E frac. in 1st samp. - barrel,50,0.,1.,cl_eemb1/(cl_eemb0+cl_eemb1+cl_eemb2+cl_eemb3),abs(cl_eta)<1.475
+m_h9,E frac. in 2nd samp. - barrel,50,0.,1.,cl_eemb2/(cl_eemb0+cl_eemb1+cl_eemb2+cl_eemb3),abs(cl_eta)<1.475
+m_h10,E frac. in 3rd samp. - barrel,50,0.,.1,cl_eemb3/(cl_eemb0+cl_eemb1+cl_eemb2+cl_eemb3),abs(cl_eta)<1.475
+m_h11,E frac. in Presampler - endcap,50,0.,1.,cl_eeme0/(cl_eeme0+cl_eeme1+cl_eeme2+cl_eeme3),abs(cl_eta)>=1.475 && abs(cl_eta)<=1.8
+m_h12,E frac. in 1st samp. - endcap,50,0.,1.,cl_eeme1/(cl_eeme0+cl_eeme1+cl_eeme2+cl_eeme3),abs(cl_eta)>=1.475
+m_h13,E frac. in 2nd samp. - endcap,50,0.,1.,cl_eeme2/(cl_eeme0+cl_eeme1+cl_eeme2+cl_eeme3),abs(cl_eta)>=1.475
+m_h14,E frac. in 3rd samp. - endcap,50,0.,0.1,cl_eeme3/(cl_eeme0+cl_eeme1+cl_eeme2+cl_eeme3),abs(cl_eta)>=1.475
+m_h28,cl_m1_eta_topoEM430,40,-2.5,2.5,cl_m1_eta_topoEM430
+m_h29,cl_m1_phi_topoEM430,40,-3.2,3.2,cl_m1_phi_topoEM430
+m_h30,cl_m2_r_topoEM430,40,0,10000,cl_m2_r_topoEM430
+m_h31,cl_m2_lambda_topoEM430,40,0,250000,cl_m2_lambda_topoEM430
+m_h32,cl_delta_phi_topoEM430,40,-2.,2,cl_delta_phi_topoEM430
+m_h33,cl_delta_theta_topoEM430,40,-0.4,0.4,cl_delta_theta_topoEM430
+m_h34,cl_delta_alpha_topoEM430,40,0.,1.,cl_delta_alpha_topoEM430
+m_h35,cl_center_x_topoEM430,40,-2000.,2000.,cl_center_x_topoEM430
+m_h36,cl_center_y_topoEM430,40,-2000.,2000.,cl_center_y_topoEM430
+m_h37,cl_center_z_topoEM430,40,-4500.,4500.,cl_center_z_topoEM430
+m_h38,cl_center_lambda_topoEM430,40,0.,1000.,cl_center_lambda_topoEM430
+m_h39,cl_lateral_topoEM430,40,0.,1.,cl_lateral_topoEM430
+m_h40,cl_longitudinal_topoEM430,40,0.,1.,cl_longitudinal_topoEM430
+m_h41,cl_eng_frac_em_topoEM430,40,0.,1.,cl_eng_frac_em_topoEM430
+m_h42,cl_eng_frac_max_topoEM430,40,0.,1.,cl_eng_frac_max_topoEM430
+m_h43,cl_eng_frac_core_topoEM430,40,0.,1.,cl_eng_frac_core_topoEM430
+m_h44,cl_m1_dens_topoEM430,40,0.,0.5,cl_m1_dens_topoEM430
+m_h45,cl_m2_dens_topoEM430,40,0.,0.2,cl_m2_dens_topoEM430
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/MinBias_physics_MinBiasChecks.py b/Calorimeter/CaloExample/CaloRecEx/share/MinBias_physics_MinBiasChecks.py
new file mode 100755
index 00000000000..2154712102d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/MinBias_physics_MinBiasChecks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=False
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=True
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007062_singlepart_gamma_E50Checks.py b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007062_singlepart_gamma_E50Checks.py
new file mode 100644
index 00000000000..e68d35b1581
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007062_singlepart_gamma_E50Checks.py
@@ -0,0 +1,10 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=False
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007080_singlepart_gamma_E5Checks.py b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007080_singlepart_gamma_E5Checks.py
new file mode 100644
index 00000000000..a117f4c7d91
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007080_singlepart_gamma_E5Checks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=False
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007085_singlepart_gamma_E500Checks.py b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007085_singlepart_gamma_E500Checks.py
new file mode 100644
index 00000000000..b472b5c8c85
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib0_csc11_007085_singlepart_gamma_E500Checks.py
@@ -0,0 +1,10 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+
+doPerfMon=False
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib1_csc11_007063_singlepart_gamma_E100Checks.py b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib1_csc11_007063_singlepart_gamma_E100Checks.py
new file mode 100644
index 00000000000..b472b5c8c85
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Photons_calib1_csc11_007063_singlepart_gamma_E100Checks.py
@@ -0,0 +1,10 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+
+doPerfMon=False
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/Truth.py b/Calorimeter/CaloExample/CaloRecEx/share/Truth.py
new file mode 100755
index 00000000000..545f786120d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/Truth.py
@@ -0,0 +1,536 @@
+#!/usr/bin/python
+
+
+import os,commands,sys,logging
+import ROOT
+import time,math,cmath
+
+class Truth:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('Truth')
+            hdlr = logging.FileHandler('Truth.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+            
+    def getFilePar(self):
+        com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(testName)
+            return -1
+        
+        nTestName=''
+        for i in testName:
+            if i !=' ':
+                nTestName+=i;
+
+        filePar=nTestName+".par";
+        com="wget http://cern.ch/CaloRTT/"+filePar
+        res,out=commands.getstatusoutput(com)
+        if res!=0 :
+            self.logger.error(out)
+            return -1
+        return filePar
+
+    def initHTML(self):
+        f=open("Truth.html","w")
+        f.write("<html><head><title>Truth</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head>")
+        f.write("<body>")
+        f.close()
+
+
+        f=open("Truth.txt","w")
+        f.close()
+        
+    def closeHTML(self):
+        f=open("Truth.html","a")
+        f.write("</body>")
+        f.write("</html>")
+
+    def mysign(self,val):
+        if val<0.:
+            return -1
+        else:
+            return 1
+
+    def saveHisto(self,hist,filePar,opt):
+        html= open('Truth.html','a')
+
+        txt= open("Truth.txt","a");
+
+        tmp=hist.GetTitle()
+        name=""
+        for i in tmp:
+            if i==' ':
+                i='_'
+            if i=='(':
+                i='z'
+            if i==')':
+                i='z'
+            name+=i
+
+        com='grep RTTParm_truth_'+name+ ' '+filePar +' | cut -d= -f2 | tail -n1'
+
+        res,max=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error('Problem to the par of '+name+' : '+max)
+            return -1
+
+        can=ROOT.TCanvas()
+        # only 3 digits
+        ROOT.TGaxis.SetMaxDigits(3)
+        
+        hist.SetLineColor(2)
+        hist.SetLineStyle(2)
+        hist.Draw(opt)
+
+        txt.write("################################\n");
+        txt.write("Name : "+str(hist.GetTitle())+'\n')
+        txt.write("Mean = "+str(hist.GetMean())+'\n')
+        txt.write("RMS = "+str(hist.GetRMS())+'\n')
+
+        try:
+            float(max)
+        except:
+            max=0
+
+        isOk=0
+        if math.fabs(float(hist.GetMean())) > float(max):
+            isOk=-1
+            txt.write("TEST FAILED (lim = "+str(max)+')\n')
+        else:
+            txt.write("TEST OK (lim = "+str(max)+')\n')
+
+        can.Modified()
+        can.Update()
+
+        epsname=name+".eps"
+        gifname=name+".gif"
+
+        can.SaveAs(epsname)
+
+        com1='pstopnm -ppm -xborder 0 -yborder 0 -portrait '+epsname
+        com2='ppmtogif '+epsname+'001.ppm >'+gifname
+        
+        os.system(com1)
+        os.system(com2)
+        
+        html.write("<CENTER><BR>")
+        html.write("<BR>")
+        html.write("<IMG SRC=\""+gifname+'\"><BR>');
+        html.write("<HR>")
+
+        if isOk == -1 :
+            html.write("<BR>")
+            html.write("<CENTER><font color=red>TEST FAILED (lim = "+str(max)+")</font></CENTER>")
+        else:
+            html.write("<BR>")
+            html.write("<CENTER><font color=green>TEST OK (lim = "+str(max)+")</font></CENTER>")
+            html.write("<BR>")
+        html.write("<HR>")
+        
+        html.close()
+        txt.close()
+
+        return isOk
+
+    def doElectrons(self,filePar):
+        self.initHTML()
+        
+        #f = ROOT.TFile('ntuple.root')
+        #f.cd('CollectionTree')
+        #mytree=ROOT.gDirectory.Get('CollectionTree')
+
+        ##################################
+        #os.system('ls data/*root.* > ntuples.txt')
+        os.system('ls ntuple.root > ntuples.txt')
+        
+        f=open('ntuples.txt','r')
+        lines=f.readlines()
+        f.close()
+
+        chain = ROOT.TChain('CollectionTree')
+
+        for li in lines:
+            chain.Add('./'+li.strip())
+
+        mytree=chain
+        #################################
+
+        m_drmin  = ROOT.TH1F("m_drmin","drmin",100,-0.2,0.2)
+        m_h1   = ROOT.TH1F("m_h1","Energy resolution",100,-0.25,0.25)
+        m_h1.SetXTitle("(E_{t}(reco)-E_{t}(true))/E_{t}(true)")
+
+        m_h2   = ROOT.TH1F("m_h2","Phi resolution",100,-0.01,0.01)
+        m_h2.SetXTitle("#Phi resolution (rad)")
+
+        m_h3   = ROOT.TH1F("m_h3","Eta resolution in the barrel",100,-0.01,0.01)
+        m_h3.SetXTitle("#eta resolution")
+        
+        m_h4   = ROOT.TH1F("m_h4","Eta resolution in the endcap",100,-0.01,0.01)
+        m_h4.SetXTitle("#eta resolution")
+
+        m_h5   = ROOT.TH1F("m_h5","Efficiency vs eta",50,-3,3)  
+        m_h5.SetXTitle("#eta")
+
+        m_tmp1   = ROOT.TH1F("m_tmp1","EtaGen",50,-3,3)
+        m_tmp2  = ROOT.TH1F("m_tmp2","cl_eta",50,-3,3) 
+
+        entries=mytree.GetEntriesFast()
+
+        for jentry in xrange( entries ):
+            ientry=mytree.LoadTree( jentry )
+            if ientry < 0 :
+                break
+
+            nb=mytree.GetEntry(jentry)
+            if nb<=0:
+                continue
+            
+            nEvent = int(mytree.IEvent)
+            if nEvent<0:
+                continue
+
+            indEle=[]
+            iele=0
+            for ipart in range(0,mytree.NPar):
+                if abs((mytree.Type)[ipart])==11 and (mytree.GenStat)[ipart]==1 and (mytree.KMothNt)[ipart]==-1:
+                    indEle.append(ipart)
+                    m_tmp2.Fill((mytree.EtaGen)[indEle[iele]])
+
+                    iele+=1
+
+                    if iele>1:
+                        logger.info('two many electrons')
+                        return -1
+
+            nele=iele
+
+            # a quel cluster correspond quel electron ?
+            # je tourne sur ts les clusters de l ev
+            for ic in range(0,mytree.cl_nc): 
+                etacl = (mytree.cl_eta)[ic]
+                phicl = (mytree.cl_phi)[ic]
+                etcl  = (mytree.cl_et)[ic]
+
+                m_drmin.Fill((mytree.ZV)[0]);
+                etae = (mytree.EtaGen)[indEle[0]];
+                if math.fabs((mytree.cl_eta)[ic])>1.475 :
+                    etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])*(1-(mytree.ZV)[mytree.IVPrimary]/(self.mysign((mytree.cl_eta)[ic])*3800.0)))
+                    phiclcor = (mytree.cl_phi)[ic]+(0.3*3800.0*(-(mytree.Type)[indEle[0]]/11.0)*self.mysign((mytree.cl_eta)[ic]))/((mytree.cl_et)[ic]*cmath.sinh((mytree.cl_eta)[ic]))
+                    m_h4.Fill((etaclcor-etae).real)
+                else:
+                    etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])-(mytree.ZV)[mytree.IVPrimary]/1600.0)
+                    m_h3.Fill((etaclcor-etae).real)
+                    phiclcor = (mytree.cl_phi)[ic]+(0.3*1600.0*(-(mytree.Type)[indEle[0]]/11.0)/(mytree.cl_et)[ic])
+
+                phie = (mytree.PhiGen)[indEle[0]]
+                ete  = (mytree.PtGen)[indEle[0]]
+                
+                try:
+                    m_h2.Fill(phiclcor.real-phie)
+                except:
+                    m_h2.Fill(phiclcor-phie)
+                m_h1.Fill((etcl-ete)/ete)
+
+                m_tmp1.Fill(etae)
+
+        ROOT.gStyle.SetOptFit(1011)
+
+        m_h1.Fit("gaus")
+        m_h2.Fit("gaus")
+        m_h3.Fit("gaus")
+        m_h4.Fit("gaus")
+    		    
+        res1=self.saveHisto(m_h1,filePar,'')
+        res2=self.saveHisto(m_h2,filePar,'')
+        res3=self.saveHisto(m_h3,filePar,'')
+        res4=self.saveHisto(m_h4,filePar,'')
+        m_h5.Divide(m_tmp1,m_tmp2,1,1,"B")
+        
+	res5=self.saveHisto(m_h5,filePar,"E")
+
+        if res1==-1 or res2==-1 or res3==-1 or res4==-1 or res5==-1: 
+            return -1
+        else:
+            return 0
+            
+    def doTop(self,filePar):
+        self.initHTML()
+        
+        f = ROOT.TFile('ntuple.root')
+        #f.cd('CollectionTree')
+        mytree=ROOT.gDirectory.Get('CollectionTree')
+
+        m_drmin  = ROOT.TH1F("m_drmin","drmin",100,-0.2,0.2)
+        m_h1   = ROOT.TH1F("m_h1","Energy resolution",100,-0.25,0.25)
+        m_h1.SetXTitle("(E_{t}(reco)-E_{t}(true))/E_{t}(true)")
+
+        m_h2   = ROOT.TH1F("m_h2","Phi resolution",100,-0.01,0.01)
+        m_h2.SetXTitle("#Phi resolution (rad)")
+
+        m_h3   = ROOT.TH1F("m_h3","Eta resolution in the barrel",100,-0.01,0.01)
+        m_h3.SetXTitle("#eta resolution")
+        
+        m_h4   = ROOT.TH1F("m_h4","Eta resolution in the endcap",100,-0.01,0.01)
+        m_h4.SetXTitle("#eta resolution")
+
+        m_h5   = ROOT.TH1F("m_h5","Efficiency vs eta",50,-3,3)  
+        m_h5.SetXTitle("#eta")
+
+        m_tmp1   = ROOT.TH1F("m_tmp1","EtaGen",50,-3,3)
+        m_tmp2  = ROOT.TH1F("m_tmp2","cl_eta",50,-3,3) 
+
+        entries=mytree.GetEntriesFast()
+
+        for jentry in xrange( entries ):
+            ientry=mytree.LoadTree( jentry )
+            if ientry < 0 :
+                break
+
+            nb=mytree.GetEntry(jentry)
+            if nb<=0:
+                continue
+            
+            nEvent = int(mytree.IEvent)
+            if nEvent<0:
+                continue
+
+            indEle=[]
+            iele=0
+            for ipart in range(0,mytree.NPar):
+                if  abs((mytree.Type)[ipart])==11 and abs((mytree.Type)[(mytree.KMothNt)[ipart]])==24 :
+			#indEle[iele]=ipart
+                        indEle.append(ipart)
+			m_tmp2.Fill((mytree.EtaGen)[indEle[iele]])
+			iele=+1
+                        if iele>4:
+                            logger.info('two many electrons')
+                            return -1
+
+            nele=iele
+
+            # a quel cluster correspond quel electron ?
+            # je tourne sur ts les clusters de l ev
+            for ic in range(0,mytree.cl_nc): 
+                drmin = 9999.
+                im    = 0
+
+                # pour un cluster donne je tourne sur tous les electrons primaires trouves precedemment et je minimise dr pour savoir celui qui est le plus pres du cluster 
+                for iele in range(0,nele):
+                    deta = (mytree.EtaGen)[indEle[iele]] - (mytree.cl_eta)[ic];
+                    dphi = (mytree.PhiGen)[indEle[iele]] - (mytree.cl_phi)[ic];
+                    
+                    if dphi > math.pi: 
+                        dphi = math.fabs(dphi) - 2.*math.pi
+                    dr = math.sqrt(dphi*dphi + deta*deta)
+
+                    if dr < drmin:
+                        drmin = dr
+                        im    = iele
+
+                # l'electron matchant le cluster a l'indice im
+
+                m_drmin.Fill(drmin);
+
+                if drmin < 0.1  : 
+                    etacl = (mytree.cl_eta)[ic]
+                    phicl = (mytree.cl_phi)[ic]
+                    etcl  = (mytree.cl_et)[ic]
+                    etae = (mytree.EtaGen)[indEle[im]]
+                    if math.fabs((mytree.cl_eta)[ic])>1.475 :
+                        etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])*(1-(mytree.ZV)[mytree.IVPrimary]/(self.mysign((mytree.cl_eta)[ic])*3800.0)));
+                        phiclcor = (mytree.cl_phi)[ic]+(0.3*3800*(-(mytree.Type)[indEle[im]]/11.0)*self.mysign((mytree.cl_eta)[ic]))/((mytree.cl_et)[ic]*cmath.sinh((mytree.cl_eta)[ic]));
+                        m_h4.Fill((etaclcor-etae).real)
+                    else:
+                        etaclcor = cmath.asinh(cmath.sinh((mytree.cl_eta)[ic])-(mytree.ZV)[mytree.IVPrimary]/1600.0)
+                        phiclcor = (mytree.cl_phi)[ic]+(0.3*1600.0*(-(mytree.Type)[indEle[im]]/11.0)/(mytree.cl_et)[ic])
+                        m_h3.Fill((etaclcor-etae).real)
+
+                    phie = (mytree.PhiGen)[indEle[im]]
+                    ete  = (mytree.PtGen)[indEle[im]]
+
+                    try:
+                        m_h2.Fill(phiclcor.real-phie)
+                    except:
+                        m_h2.Fill(phiclcor-phie)
+                    m_h1.Fill((etcl-ete)/ete)	 
+                    m_tmp1.Fill(etae)
+
+        
+        
+    
+        ROOT.gStyle.SetOptFit(1011)
+
+        m_h1.Fit("gaus")
+        m_h2.Fit("gaus")
+        m_h3.Fit("gaus")
+        m_h4.Fit("gaus")
+    		    
+        res1=self.saveHisto(m_h1,filePar,'')
+        res2=self.saveHisto(m_h2,filePar,'')
+        res3=self.saveHisto(m_h3,filePar,'')
+        res4=self.saveHisto(m_h4,filePar,'')
+        m_h5.Divide(m_tmp1,m_tmp2,1,1,"B")
+        
+	res5=self.saveHisto(m_h5,filePar,"E")
+
+        if res1==-1 or res2==-1 or res3==-1 or res4==-1 or res5==-1: 
+            return -1
+        else:
+            return 0
+    
+    def doPhotons(self,filePar):
+        self.initHTML()
+        
+        #f = ROOT.TFile('ntuple.root')
+        #f.cd('CollectionTree')
+        #mytree=ROOT.gDirectory.Get('CollectionTree')
+
+        ##################################
+        #os.system('ls photons/*root* > ntuples.txt')
+        os.system('ls ntuple.root > ntuples.txt')
+        f=open('ntuples.txt','r')
+        lines=f.readlines()
+        f.close()
+
+        chain = ROOT.TChain('CollectionTree')
+
+        for li in lines:
+            chain.Add('./'+li.strip())
+
+        mytree=chain
+        #################################
+
+        m_drmin  = ROOT.TH1F("m_drmin","drmin",100,-0.2,0.2)
+        m_h1   = ROOT.TH1F("m_h1","Energy resolution",100,-0.25,0.25)
+        m_h1.SetXTitle("(E_{t}(reco)-E_{t}(true))/E_{t}(true)")
+
+        m_h2   = ROOT.TH1F("m_h2","Phi resolution",100,-0.01,0.01)
+        m_h2.SetXTitle("#Phi resolution (rad)")
+
+        m_h3   = ROOT.TH1F("m_h3","Eta resolution in the barrel",100,-0.01,0.01)
+        m_h3.SetXTitle("#eta resolution")
+        
+        m_h4   = ROOT.TH1F("m_h4","Eta resolution in the endcap",100,-0.01,0.01)
+        m_h4.SetXTitle("#eta resolution")
+
+        m_h5   = ROOT.TH1F("m_h5","Efficiency vs eta",50,-3,3)  
+        m_h5.SetXTitle("#eta")
+
+        m_tmp1   = ROOT.TH1F("m_tmp1","EtaGen",50,-3,3)
+        m_tmp2  = ROOT.TH1F("m_tmp2","cl_eta",50,-3,3) 
+
+        entries=mytree.GetEntriesFast()
+
+        for jentry in xrange( entries ):
+            ientry=mytree.LoadTree( jentry )
+            if ientry < 0 :
+                break
+            nb=mytree.GetEntry(jentry)
+            if nb<=0:
+                continue          
+            nEvent = int(mytree.IEvent)
+            if nEvent<0:
+                continue
+            dRmin = 999.
+            TheNearestCluster = -1
+
+            #print int(mytree.IEvent),int(mytree.cl_nc),len(mytree.PtGen)
+            if mytree.cl_nc==0 or len(mytree.PtGen)==0:
+                continue
+            for i in range(0,int(mytree.cl_nc)):
+                #print 'i=',i
+                dphi = 1000.
+                deta = 1000.
+	       
+                # resolution in energy
+                val=((mytree.cl_et)[i]-(mytree.PtGen)[0])/(mytree.PtGen)[0]
+                
+                m_h1.Fill(val)        
+                # resolution in phi
+                if  (mytree.cl_phi)[i]-(mytree.PhiGen)[0] < 6: 
+                    dphi =((mytree.cl_phi)[i]-(mytree.PhiGen)[0])
+                    m_h2.Fill(dphi)
+
+                # resolution in eta barrel corrected by the z vertex spread
+                deta=0.
+                if  math.fabs((mytree.EtaGen)[0])<1.475:
+                    deta =(mytree.cl_eta)[i]-cmath.asinh(cmath.sinh((mytree.EtaGen)[0])+(mytree.ZV)[mytree.IVPrimary]/1600.)
+                    m_h3.Fill(deta.real)
+                elif math.fabs((mytree.EtaGen)[0])>= 1.475 :
+                    deta = (mytree.cl_eta)[i]-cmath.asinh(cmath.sinh((mytree.EtaGen)[0])/(1-self.mysign((mytree.EtaGen)[0])*(mytree.ZV)[mytree.IVPrimary]/3800.))
+                    
+                    m_h4.Fill(deta.real)
+		
+                if (math.fabs(dphi) > math.pi):
+                    dphi = 2.0*math.pi - math.fabs(dphi)
+                dR = math.sqrt(deta.real*deta.real+dphi*dphi)
+                if dR < dRmin:
+                    dRmin = dR
+                    TheNearestCluster = i
+	      
+	    
+            m_tmp2.Fill((mytree.EtaGen)[0])
+            if TheNearestCluster >= 0 and dRmin < 0.1:
+                m_tmp1.Fill((mytree.EtaGen)[0])
+
+        ROOT.gStyle.SetOptFit(1011)
+
+        m_h1.Fit("gaus")
+        m_h2.Fit("gaus")
+        m_h3.Fit("gaus")
+        m_h4.Fit("gaus")
+    		    
+        res1=self.saveHisto(m_h1,filePar,'')
+        res2=self.saveHisto(m_h2,filePar,'')
+        res3=self.saveHisto(m_h3,filePar,'')
+        res4=self.saveHisto(m_h4,filePar,'')
+        m_h5.Divide(m_tmp1,m_tmp2,1,1,"B")
+        
+	res5=self.saveHisto(m_h5,filePar,"E")
+
+        if res1==-1 or res2==-1 or res3==-1 or res4==-1 or res5==-1: 
+            return -1
+        else:
+            return 0
+
+    def run(self):
+
+        ROOT.gROOT.Reset() 
+        ROOT.gStyle.SetStatW(0.19)
+        ROOT.gStyle.SetStatFontSize(0.03)
+        ROOT.gStyle.SetOptStat(111110)
+
+        filePar=self.getFilePar()
+        if filePar==-1:
+            self.logger.error('getFilePar() failed')
+            return
+
+        
+        if filePar.find('Photons')>=0:
+            return self.doPhotons(filePar)
+            
+        if filePar.find('Electrons')>=0:
+            return self.doElectrons(filePar)
+            
+        if filePar.find('Top')>=0 or filePar.find('top')>=0:
+            return self.doTop(filePar)
+
+        # if filePar.find('Zee')>=0:
+        #    return self.doZee(filePar)
+
+        # if filePar.find('H2e2mu')>=0:
+        #    return self.doH2e2mu(filePar)
+
+        
+            
+
+
+#a=Truth(logging.INFO)
+#a.run()
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/check.py b/Calorimeter/CaloExample/CaloRecEx/share/check.py
new file mode 100755
index 00000000000..a632ffb9d50
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/check.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+
+import os,commands,sys,logging,imp
+import traceback
+
+########################################################
+import HistoComparison
+import Truth
+import extractRec
+import memleak
+import myperfmon
+########################################################
+
+logLevel=logging.INFO
+logger = logging.getLogger('check')
+hdlr = logging.FileHandler('check.log',"w")
+formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+hdlr.setFormatter(formatter)
+logger.addHandler(hdlr)
+logger.setLevel(logLevel)
+
+
+
+com = "cat env.log|grep AtlasVersion | cut -d= -f2| tail -n1"
+res,release=commands.getstatusoutput(com)
+
+com = "cat env.log|grep AtlasArea | cut -d= -f2| tail -n1"
+res,branch=commands.getstatusoutput(com)
+
+com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1 | awk '{print $1}'"
+res,testName=commands.getstatusoutput(com)
+if res!=0 :
+    logger.error(testName.strip())
+    sys.exit(1)
+
+name=testName+'Checks.py';
+print name
+mod = imp.load_source("tests",name)
+import tests
+
+file = open('./checks.html','w')
+txt='<html><head><title>RTT results for '+testName.strip()+'</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head><body><center><h1>RTT results for '+testName.strip()+'</h1></center>'
+txt+='<br><br><br><br>'
+txt+='<center>'+'Branch : '+branch+'<br>'
+txt+='Release : '+release+'<br><br><br>'
+
+if tests.doHistoComparison==True:
+    txt+='<a href="Comparison.html">Comparison plots</a>'
+
+if tests.doTruth==True:
+    txt+='<br><a href="Truth.html">Truth plots</a>'
+
+if tests.doextractRec==True:
+    txt+='<br><a href="Alert.txt">CPU times warning</a>'
+    
+if tests.doPerfMon==True:
+    txt+='<br><a href="out.perfmon.pdf">Perfmon plots</a>'
+
+
+txt+='</center></body></html>'
+file.write(txt)
+file.close()
+
+
+logger.info('============= CHECKS BEGIN =================')
+
+    
+# Comparison plots
+if tests.doHistoComparison==True:
+    logger.info('---- Histograms comparison ----')
+    try: 
+       a=HistoComparison.HistosComparison(logger,logging.info)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of HistoComparison failed')
+       res=10
+    if res==0:
+        logger.info('Histograms comparison done successfully')
+    else:
+        logger.info('Histograms comparison failed')
+
+# Truth
+if tests.doTruth==True:
+    logger.info('---- Truth ----')
+    try:
+       a=Truth.Truth(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of Truth failed')
+       res=10
+
+    if res==0:
+        logger.info('Truth done successfully')
+    else:
+        logger.info('Truth failed')
+
+# CPU time
+if tests.doextractRec==True:
+    logger.info('---- CPU time ----')
+    try: 
+       a=extractRec.extractRec(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of extractRec failed')
+       res=10
+
+    if res==0:
+        logger.info('extractRec done successfully')
+    else:
+        logger.info('extractRec failed')
+
+# Memory leaks
+if tests.doMemLeak==True:
+    logger.info('---- Memory leak ----')
+    try:
+       a=memleak.memleak(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of memleak failed')
+       res=10
+
+    if res==0:
+        logger.info('MemLeak done successfully')
+    else:
+        logger.info('MemLeak failed')
+
+
+# Perf Mon
+if tests.doPerfMon==True:
+    logger.info('---- PerfMon ----')
+    try:
+       a=myperfmon.myperfmon(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of PerfMon failed')
+       res=10
+
+    if res==0:
+        logger.info('PerfMon done successfully')
+    else:
+        logger.info('PerfMon failed')
+
+
+
+logger.info('============= CHECKS END =================')
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/checkAODESDcontent.py b/Calorimeter/CaloExample/CaloRecEx/share/checkAODESDcontent.py
new file mode 100755
index 00000000000..151cf755c3a
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/checkAODESDcontent.py
@@ -0,0 +1,77 @@
+#!/usr/bin/python
+
+import commands,sys,os,logging
+
+class checkAODESDcontent:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('AODESD')
+            hdlr = logging.FileHandler('checkAODESD.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+
+    def run(self):
+        res1,output=commands.getstatusoutput("./checkFile.py -d ESD.pool.root >& ESDAOD.log")
+        if res1!=0:
+            self.logger.error('problem to run checkFile.py on ESD.pool.root')
+        res2,output=commands.getstatusoutput("./checkFile.py -d AOD.pool.root >> ESDAOD.log")
+        if res2!=0:
+            self.logger.error('problem to run checkFile.py on AOD.pool.root')
+
+        if res1!=0 and res2!=0:
+            self.logger.error('no files to check')
+            return -1
+        
+        com = "cat MYRTTINFOS.txt" + "|grep BEGIN_RTTINFO | cut -d= -f2| tail -n1"
+        res,testName=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error(testName)
+            return -1
+        reflog='ref'+testName.strip()+'AODESD.log'
+
+        com='wget http://cern.ch/CaloRTT/'+reflog
+        res,out=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error(out)
+            return -1
+
+        try:
+            f=open(log,'r')
+            fclose(log)
+        except:
+            self.logger.error(log+' not found')
+            return -1
+        
+
+        keysList=[]
+        file = open(reflog,'r')
+        for line in file:
+            t=line.split()
+            if len(t)==8 and t[1]=='kb' and t[3]=='kb' and t[5]=='kb':
+                keysList.append(t[7])
+        file.close()
+
+        for k in keysList:
+            com1='grep '+k+' '+log+' | grep -v Tree'
+            res1,out1=commands.getstatusoutput(com1)
+            if res1!=0:
+                self.logger.warning(k+' NOT FOUND')
+                continue
+            tmpNew=out1.split()
+
+            com2='grep '+k+' '+reflog+' | grep -v Tree'
+            res2,out2=commands.getstatusoutput(com2)
+            if res2!=0:
+                continue
+            tmpRef=out2.split()
+
+            if float(tmpNew[4]) > float(tmpRef[4]):
+                self.logger.warning(k +' is higher : '+'NEW='+tmpNew[4]+'/'+'REF='+tmpRef[4]+' (kb)')
+                
+        return 0
+        
+    
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/checkR.py b/Calorimeter/CaloExample/CaloRecEx/share/checkR.py
new file mode 100644
index 00000000000..c4ee2ed5e14
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/checkR.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python
+
+import os,commands,sys,logging,imp
+import traceback
+
+########################################################
+import HistoComparison
+import Truth
+import extractRec
+import memleak
+import myperfmon
+########################################################
+
+logLevel=logging.INFO
+logger = logging.getLogger('checkR')
+hdlr = logging.FileHandler('checkR.log',"w")
+formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+hdlr.setFormatter(formatter)
+logger.addHandler(hdlr)
+logger.setLevel(logLevel)
+
+com = "cat env.log|grep AtlasVersion | cut -d= -f2| tail -n1"
+res,release=commands.getstatusoutput(com)
+
+com = "cat env.log|grep AtlasArea | cut -d= -f2| tail -n1"
+res,branch=commands.getstatusoutput(com)
+
+com="grep RTTINFO MYRTTINFOS.txt | cut -d= -f2 | tail -n1 | awk '{print $1}'"
+res,testName=commands.getstatusoutput(com)
+if res!=0 :
+    logger.error(testName.strip())
+    sys.exit(1)
+
+name=testName+'Checks.py';
+print name
+mod = imp.load_source("tests",name)
+import tests
+
+file = open('./checks.html','w')
+txt='<html><head><title>RTT results for '+testName.strip()+'</title><link rel=\"StyleSheet\" href=\"rtt.css\" type=\"text/css\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta http-equiv=\"Content-Language\" content=\"en\"></head><body><center><h1>RTT results for '+testName.strip()+'</h1></center>'
+txt+='<br><br><br><br>'
+txt+='<center>'+'Branch : '+branch+'<br>'
+txt+='Release : '+release+'<br><br><br>'
+
+if tests.doHistoComparison==True:
+    txt+='<a href="Comparison.html">Comparison plots</a>'
+
+if tests.doTruth==True:
+    txt+='<br><a href="Truth.html">Truth plots</a>'
+
+if tests.doextractRec==True:
+    txt+='<br><a href="Alert.txt">CPU times warning</a>'
+    
+if tests.doPerfMon==True:
+    txt+='<br><a href="out.perfmon.pdf">Perfmon plots</a>'
+
+
+txt+='</center></body></html>'
+file.write(txt)
+file.close()
+
+
+logger.info('============= CHECKS BEGIN =================')
+
+    
+# Comparison plots
+if tests.doHistoComparison==True:
+    logger.info('---- Histograms comparison ----')
+    try: 
+       a=HistoComparison.HistosComparison(logger,logging.info)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of HistoComparison failed')
+       res=10
+    if res==0:
+        logger.info('Histograms comparison done successfully')
+    else:
+        logger.info('Histograms comparison failed')
+
+# Truth
+if tests.doTruth==True:
+    logger.info('---- Truth ----')
+    try:
+       a=Truth.Truth(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of Truth failed')
+       res=10
+
+    if res==0:
+        logger.info('Truth done successfully')
+    else:
+        logger.info('Truth failed')
+
+# CPU time
+if tests.doextractRec==True:
+    logger.info('---- CPU time ----')
+    try: 
+       a=extractRec.extractRec(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of extractRec failed')
+       res=10
+
+    if res==0:
+        logger.info('extractRec done successfully')
+    else:
+        logger.info('extractRec failed')
+
+# Memory leaks
+if tests.doMemLeak==True:
+    logger.info('---- Memory leak ----')
+    try:
+       a=memleak.memleak(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of memleak failed')
+       res=10
+
+    if res==0:
+        logger.info('MemLeak done successfully')
+    else:
+        logger.info('MemLeak failed')
+
+
+# Perf Mon
+if tests.doPerfMon==True:
+    logger.info('---- PerfMon ----')
+    try:
+       a=myperfmon.myperfmon(logger,logging.INFO)
+       res=a.run()
+    except:
+       traceback.print_exc()
+       logger.error('execution of PerfMon failed')
+       res=10
+
+    if res==0:
+        logger.info('PerfMon done successfully')
+    else:
+        logger.info('PerfMon failed')
+
+
+
+logger.info('============= CHECKS END =================')
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/extractRec.py b/Calorimeter/CaloExample/CaloRecEx/share/extractRec.py
new file mode 100755
index 00000000000..a772bb1a88a
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/extractRec.py
@@ -0,0 +1,393 @@
+#!/usr/bin/env python
+
+
+import os, sys, commands,getopt, datetime
+import stat,logging
+
+
+class extractRec:
+
+    def __init__(self,log,logLevel):   
+
+        
+        self.loggerAlert = logging.getLogger('Alert')
+        self.hdlrAlert = logging.FileHandler('Alert.txt',"w")
+        formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+        self.hdlrAlert.setFormatter(formatter)
+        self.loggerAlert.addHandler(self.hdlrAlert)
+        self.loggerAlert.setLevel(logLevel)
+
+        if log=='':
+            self.loggerInfo = logging.getLogger('Info')
+            self.hdlrInfo = logging.FileHandler('Info.txt',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            self.hdlrInfo.setFormatter(formatter)
+            self.loggerInfo.addHandler(self.hdlrInfo)
+            self.loggerInfo.setLevel(logLevel)
+        else:
+            self.loggerInfo = log
+        
+        self.tests=["Photons_calib0_csc11_007062_singlepart_gamma_E50","Electrons_calib0_csc11_007070_singlepart_e_E5","Photons_calib0_csc11_007080_singlepart_gamma_E5","Photons_calib0_csc11_007085_singlepart_gamma_E500","top_calib1_csc11_005200_T1_McAtNlo_Jimmy","Electrons_calib1_csc11_007061_singlepart_e_E100","Photons_calib1_csc11_007063_singlepart_gamma_E100"]
+        
+        # from auditors svc
+        self.CaloList=['LAr37ClusterMaker','LAr33ClusterMake','LArSWClusterMaker','LAr35ClusterMaker','CBNT_TileCell','CaloSWClusterMaker','CBNT_CaloCluster','CBNT_CaloCluster37','CBNT_CaloInfo','CBNT_CaloCluster35','CaloCellMaker','CaloTopoClusterMaker','TruthCone4Jets','TruthConeJets','CBNT_LArCell','CaloCell2TopoClusterMapper','EMTopoClusterMaker','TruthKtJets','TowerMaker','KtJets','ConeJets','Cone4Jets','METAlg']
+        # from personal chronosvc
+        self.extraCaloList=['CmbTowerBldr.TileCmbTwrBldr','CaloCellMaker_CaloCellContainerChecke','CaloCellMaker_CaloCellContainerFinali','CmbTowerBldr.FCalCmbTwrBldr','CaloCellMaker_LArCellBuilderLAr','CaloCellMaker_TileCellBuilder','CmbTowerBldr.LArCmbTwrBldr','TowerMaker.LArTowerBuilder','CmbTowerBldr.LArCmbTwrBldrChronoCellLoop','CmbTowerBldr.LArCmbTwrBldrChronobuild','TowerMaker.LArTowerBuilderChronobuild','TowerMaker.LArTowerBuilderChronoCellLoop']
+        self.debugLevel=0
+        # in sec
+        self.diffTime=0.05
+        
+        #self.emails=['bernardet@cppm.in2p3.fr']
+        self.emails=[]
+        self.wwwemails="http://cern.ch/CaloRTT/CaloRecEx_mails2.txt"
+        self.testName="CaloRecEx"
+        # if type = 1 use of the list above for the algo
+        self.type=0
+        self.typePerso=0
+        # Size of RDO.pool.root = XXX ko         
+
+
+        # release, time info
+        self.release=""
+        self.branch=""
+        self.date=""
+
+        self.mailSubjectProblem=""
+        self.mailSubjectReport=""
+        #self.switchoffRTTpart=True
+        #####################
+        self.alertMess=""
+        self.alertMessOk=False
+        self.alertReportOk=True
+        self.checkFile=0
+
+
+
+            
+####  CPU Time
+
+    def extractCPUTimeInitializeAll(self,file,type):
+
+        tmp=[]
+        if type !=1:
+            com="grep \"Time User\" " + file + " | grep initi"
+
+            self.loggerInfo.debug(com)
+        
+            res=commands.getoutput(com)
+            tmp= res.splitlines() 
+        else:
+            for i in self.CaloList:
+                com="grep \"Time User\" " + file + " | grep \"\<" +i+":initi\""
+                self.loggerInfo.debug(com)
+                res=commands.getoutput(com)
+                tmp += res.splitlines()
+            
+        return tmp
+            
+    def extractCPUTimeInitializeAlgo(self,file, algo):
+
+        com="grep \"Time User\" " + file + " | grep initi" + " | grep  '^" + algo +"' | cut -d= -f2 | awk '{print $1\" \"$2}'"
+
+        #print com
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+    def extractCPUTimeExecuteAll(self,file,type):
+    
+        tmp=[]
+        if type !=1:
+            com="grep \"Time User\" " + file + " | grep execute"
+
+            self.loggerInfo.debug(com)
+        
+            res=commands.getoutput(com)    
+            tmp= res.splitlines() 
+        else:
+            for i in self.CaloList:
+                com="grep \"Time User\" " + file + " | grep \"\<" +i
+                self.loggerInfo.debug(com)
+                res=commands.getoutput(com)
+                tmp += res.splitlines()
+
+        return tmp
+
+
+    def extractCPUTimeExecuteAlgo(self,file, algo):
+
+        com="grep \"Time User\" " + file + " | grep  '\<" + algo +"' | cut -d= -f2 | awk '{print $1\" \"$2}' "
+        self.loggerInfo.debug(com)
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+
+
+    def extractNbEventsExecuteAlgo(self,file, algo):
+
+        com="grep \"Time User\" " + file + " | grep  '\<" + algo +"'| cut -d\# -f 2 | cut -d = -f 2 "
+
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+
+
+    def getNbEvents(self,file):
+
+        com="grep \"INFO Total Virtual memory\" " + file +" | wc -l"
+
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+    def compareCPUTimeInitialize(self,file,reffile,type):
+        # 
+        CPUTimeRef=[]
+        alg=[]
+        CPUTimeRef=self.extractCPUTimeInitializeAll(reffile,type)
+        for i in CPUTimeRef:
+            t=i.lstrip()
+            tmp=t.split(" ")
+            alg.append(tmp[0])
+        #print alg
+        for j in alg:
+            tref=self.extractCPUTimeInitializeAlgo(reffile,str(j))
+            tnew=self.extractCPUTimeInitializeAlgo(file,str(j))
+            if len(tnew)==0:
+                    mess=j+" not found in " + file
+                    self.loggerInfo.info(mess)
+                    continue
+                
+            #print j,tref,tnew
+            trefUnity=self.CPUTimeUnity(str(tref[0]))
+            tnewUnity=self.CPUTimeUnity(str(tnew[0]))
+            #print j,trefUnity,tnewUnity
+            ttnew=tnew[0].split('[')
+            ttref=tref[0].split('[')
+            ttref2=self.convertCPUTime(float(ttref[0]),trefUnity)      
+            ttnew2=self.convertCPUTime(float(ttnew[0]),tnewUnity)
+            #print j,ttref2,ttnew2
+            if ttnew2-ttref2 > self.diffTime:
+                mess="WARNING : "+j+" REF : "+str(ttref[0])+self.CPUTimeUnity(str(tref[0]))+" NOW : "+str(ttnew[0])+self.CPUTimeUnity(str(tnew[0]))
+                self.loggerInfo.info(mess)
+                self.loggerAlert.info(mess)
+            else:
+                mess="GOOD : "+j+" REF : "+str(ttref[0])+self.CPUTimeUnity(str(tref[0]))+" NOW : "+str(ttnew[0])+self.CPUTimeUnity(str(tref[0]))
+                self.loggerInfo.info(mess)
+            
+            
+        return
+
+      
+    def convertCPUTime(self,time,unity):
+       
+        if unity=="min":
+            return time*60
+        elif unity=="ms": 
+            return time*0.001
+        elif unity=="us":
+            return time*0.000001
+        else:
+            return time
+
+    def CPUTimeUnity(self,string):
+        
+        tmp=string.split('[')
+        tmp2=tmp[1].split(']')
+        return tmp2[0]
+
+    def compareCPUTimeExecute(self,file,reffile,type):
+        # 
+        CPUTimeRef=[]
+        alg=[]
+        CPUTimeRef=self.extractCPUTimeExecuteAll(reffile,type)
+        for i in CPUTimeRef:
+            t=i.lstrip()
+            tmp=t.split(" ")
+            alg.append(tmp[0])
+        for j in alg: 
+                tref=self.extractCPUTimeExecuteAlgo(reffile,str(j))
+                nbEvtRef=self.extractNbEventsExecuteAlgo(reffile,str(j))
+                tnew=self.extractCPUTimeExecuteAlgo(file,str(j))
+                nbEvtNew=self.extractNbEventsExecuteAlgo(file,str(j))
+                #print j," ", tref,"  ",tnew
+                #print 'KARIM2 ',j," ",nbEvtRef ,"  ",nbEvtNew
+                if len(tnew)==0:
+                    mess=j+" not found in " + file
+                    self.loggerInfo.info(mess)
+                    continue
+                
+                # convert en secondes
+                trefUnity=self.CPUTimeUnity(str(tref[0]))
+                tnewUnity=self.CPUTimeUnity(str(tnew[0]))
+                ttnew=tnew[0].split('[')
+                ttref=tref[0].split('[')
+                ttref2=self.convertCPUTime(float(ttref[0]),trefUnity)      
+                ttnew2=self.convertCPUTime(float(ttnew[0]),tnewUnity)
+
+                if int(nbEvtRef[0])>0:
+                    normtref=float(ttref2)/float(nbEvtRef[0])
+                else:
+                    self.loggerInfo.warning("Ref "+j+" "+nbEvtRef[0])
+                if int(nbEvtNew[0])>0:
+                    normtnew=float(ttnew2)/float(nbEvtNew[0])
+                else:
+                    self.loggerInfo.warning("New "+j+" "+nbEvtNew[0])
+
+                if int(nbEvtRef[0])>0 and int(nbEvtNew[0])>0: 
+                    if normtnew-normtref > self.diffTime:
+                        mess="WARNING : "+j+" REF : "+str(normtref)+" s "+" NOW : "+str(normtnew)+" s "+ "  (per event)"
+                        self.loggerInfo.info(mess)
+                        # alert
+                        self.loggerAlert.info(mess)
+                    else:
+                        mess="GOOD : "+j+" REF : "+str(normtref)+" s "+" NOW : "+str(normtnew)+" s"+" (per event)"
+                        self.loggerInfo.info(mess)
+                else:
+                   mess="WARNING : can not check "+j
+                   self.loggerInfo.info(mess) 
+        return
+
+
+    def logExtract(self,file,chain):
+
+        com="egrep \""+chain + "\"  "  + file
+        self.loggerInfo.debug(com)
+        
+        res=commands.getoutput(com)    
+        res2= res.splitlines() 
+        return res2
+
+
+    def extractLog(self,log):
+
+
+        com="wc -l "+log +" | awk '{print $1}'"
+        res=commands.getoutput(com)    
+        res2=res.splitlines()
+        nbAllLines=int(res2[0])
+
+        #print nbAllLines
+        
+        com="grep ^BEGIN_RTTINFO "+log
+        res=commands.getoutput(com)    
+        res2=res.splitlines()
+        
+        names=[]
+        for i in res2:
+            name=i.split('=')
+            name[1]=name[1].strip()
+            names.append(name[1])
+            
+        for i in range(len(names)):
+            #print i,names[i]
+            #com="grep -n BEGIN_RTTINFO="+names[i]+" "+log+" | cut -d: -f1"
+            com="grep -n \"^BEGIN_RTTINFO = "+names[i]+"\" "+log+"| cut -d: -f1"
+            n1=commands.getoutput(com)
+            try:
+                #com="grep -n BEGIN_RTTINFO="+names[i+1]+" "+log+" | cut -d: -f1"
+                com="grep -n \"^BEGIN_RTTINFO = "+names[i+1]+"\" "+log+"| cut -d: -f1"
+                
+                n2=commands.getoutput(com)
+            except:
+                n2=nbAllLines
+            
+            nblines=int(n2)-int(n1)-1
+            #print nblines
+            newlog='./'+names[i]+".log"
+            #com="grep -A"+str(nblines)+" BEGIN_RTTINFO="+names[i]+" "+log +" >"+newlog
+            com="grep -A"+str(nblines)+" \"^BEGIN_RTTINFO = "+names[i]+"\" "+log +" >"+newlog
+            os.system(com)
+        return names
+
+
+###########
+
+    def run(self):
+        log=commands.getoutput("ls Calo*Ex_RTT*_log")
+        names=self.extractLog(log)
+	
+        print names
+
+        for test in names:
+            com="rm "+"./resultats.txt"
+            commands.getoutput(com)    
+
+            com = "cat MYRTTINFOS.txt|grep BEGIN_RTTINFO | cut -d= -f2| tail -n1"
+            jobopt=commands.getoutput(com)
+            self.loggerInfo.info('Test name : '+jobopt)
+            found=0
+            for opt in self.tests:
+                if opt==jobopt.strip():
+                    found=1
+                    break	
+
+            if found==0:
+                self.loggerInfo.info("test not in dict !!!")
+                return -1
+
+            self.reflog='ref'+jobopt.strip()+'.log'
+            com='wget http://cern.ch/CaloRTT/'+self.reflog
+            print com
+            os.system(com)
+
+            try:
+                file = open(self.reflog)
+                file.close()
+            except IOError:
+                self.loggerInfo.info(self.reflog+' not found')
+                return -1
+
+            # date
+            self.date=str(datetime.datetime.now().strftime("%Y-%m-%d %X"))
+            self.loggerInfo.info(self.date)
+
+            com = "cat env.log|grep AtlasVersion | cut -d= -f2| tail -n1"
+            self.release=commands.getoutput(com)
+            self.branch="Dev"
+
+            self.mailSubjectProblem="\"[RTT test, "+jobopt+","+self.branch+","+self.release+"] : extractRec problem \""
+            self.mailSubjectReport="\"[RTT test, "+jobopt+","+self.branch+","+self.release+"] : extractRec report \""
+
+            mess="Reference log = " + self.reflog
+            self.loggerInfo.info(mess)
+            mess="Log to check = "+log
+            self.loggerInfo.info(mess)
+
+     
+            self.loggerInfo.info("********************************")
+            self.loggerInfo.info("CHECK STATUSCODE")
+            
+            res=self.logExtract(log,"\|*\| lib*")
+            for i in res:
+                self.loggerInfo.info(str(i))     
+            self.loggerInfo.info("********************************")
+
+
+
+            
+            self.loggerInfo.info("********************************")
+            
+            self.loggerInfo.info("CHECK INITIALIZE TIME")
+            
+            self.compareCPUTimeInitialize(log,self.reflog,self.type)
+            
+            self.loggerInfo.info("********************************")
+            
+            self.loggerInfo.info("CHECK EXECUTE TIME")
+            
+            self.compareCPUTimeExecute(log,self.reflog,self.type)
+                 
+            self.loggerInfo.info("********************************")
+
+            return 0
+#a=extractRec()
+#a.run()
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/memleak.py b/Calorimeter/CaloExample/CaloRecEx/share/memleak.py
new file mode 100755
index 00000000000..ec278624062
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/memleak.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python
+
+import commands,sys,os,logging
+
+
+class memleak:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('memleak')
+            hdlr = logging.FileHandler('memleak.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+
+    def run(self):
+
+        log=commands.getoutput("ls Calo*Ex_RTT*_log")
+        try:
+            f=open(log,'r')
+            f.close()
+        except:
+            self.logger.error(log+' not found')
+            return -1
+        
+        com='grep \"only second half of the job\" '+log+'| grep INFO'
+        res,out=commands.getstatusoutput(com)
+        if res!=0:
+            self.logger.error(out)
+            return -1
+
+        tmp=out.split('only second half of the job:')
+        tmp2=tmp[1].strip().split('MByte/event')
+        if float(tmp2[0].strip())>0.1:
+            self.logger.warning('MEM LEAK ! :'+tmp[1].strip())
+            return -1
+        return 0
+        
+    
+                
+#a=memleak('',logging.INFO)
+#a.run()
+    
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/muons_physics_0091900_cosmicsChecks.py b/Calorimeter/CaloExample/CaloRecEx/share/muons_physics_0091900_cosmicsChecks.py
new file mode 100644
index 00000000000..2154712102d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/muons_physics_0091900_cosmicsChecks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=False
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=True
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/muons_physics_cosmicsChecks.py b/Calorimeter/CaloExample/CaloRecEx/share/muons_physics_cosmicsChecks.py
new file mode 100755
index 00000000000..2154712102d
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/muons_physics_cosmicsChecks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=False
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=True
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/myperfmon.py b/Calorimeter/CaloExample/CaloRecEx/share/myperfmon.py
new file mode 100644
index 00000000000..42ce24385eb
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/myperfmon.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+
+import commands,sys,os,logging
+
+class myperfmon:
+    def __init__(self,log,logLevel):
+        if log=='':
+            self.logger = logging.getLogger('myperfmon')
+            hdlr = logging.FileHandler('myperfmon.log',"w")
+            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+            hdlr.setFormatter(formatter)
+            self.logger.addHandler(hdlr)
+            self.logger.setLevel(logLevel)
+        else:
+            self.logger = log
+
+    def run(self):
+        res,output=commands.getstatusoutput("./perfmon.py -i ntuple.pmon.gz")
+        if res!=0:
+            self.logger.error('problem to run perfmon.py on ntuple.pmon.gz :'+output)
+            return -1
+        return 0
+
+
+
+#a=myperfmon('','')
+#a.run()
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/rtt.css b/Calorimeter/CaloExample/CaloRecEx/share/rtt.css
new file mode 100755
index 00000000000..544477ef82f
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/rtt.css
@@ -0,0 +1,1308 @@
+
+
+/*	-----------------------------------------------------------
+	STYLE
+	Appearance: margins, fonts, colors
+	-----------------------------------------------------------	*/
+
+/*	-----------------------------------------------------------
+	General elements
+	-----------------------------------------------------------	*/
+	
+/* HTML elements */
+
+html body {
+	line-height:1.55em;
+	font-family:"Lucida Grande", verdana, lucida, helvetica, sans-serif;
+	background-color:#f8f8f8;
+	margin:10;
+	padding:0;
+	font-size:x-small;
+	voice-family:"\"}\""; 
+	voice-family:inherit;
+	font-size:small;
+}
+html>body {
+	font-size:small;	
+}
+
+/* be kind to netscape 4 that doesn't understand inheritance */
+body, p, li, ul, ol, dl, dt, dd, acronym, h1, h2, h3, h4, h5, h6 {
+	background-color:transparent;
+}
+p {
+	margin:1em 0 0 0;
+}
+table {
+	border-collapse:separate;
+}
+strong, b {
+	font-weight:bold;
+}
+hr {
+	color:#9E9E70;
+	background-color:#9E9E70;
+	height:1px;
+	border:none;
+}
+pre, code, tt {
+	font-size:100%;
+	line-height:1.4em;
+	color:#7A4707;
+}
+pre {
+	margin-top:1em;
+	margin-bottom:1em;
+}
+
+/* Text */
+
+h1, h2, h3, h4, h5, h6 {
+	font-family:"Lucida Grande", helvetica, lucida, verdana, sans-serif;
+	line-height:104%;
+	padding:0;
+	margin:1em 0 0.1em 0;
+}
+h1 {
+	font-size:210%;
+	color:#e24628;
+	margin:0 0 0.1em 0;
+}
+h2 {
+	font-size:145%;
+	display:block;
+	background-color:#F3EDE7;
+	color:#900;
+	padding:0.2em 0.7em;
+	margin:1em -0.7em 0.15em -0.7em;
+	height:auto;
+}
+h3 { font-size:140%; color:#900;}
+h4 { font-size:125%; color:#900;}
+h5 { font-size:110%; color:#900;}
+h6 { font-size:95%; color:#900;}
+
+/* Links */
+
+:link:focus,
+:visited:focus,
+:link,
+:visited,
+:link:active,
+:visited:active {
+	text-decoration:none;
+	color:#1e5bbd;
+	background-color:transparent;
+}
+:link:hover,
+:visited:hover {
+	text-decoration:underline;
+	background-color:#b4d5ff;
+	color:#1559B3;
+}
+a:link img,
+a:visited img,
+a:hover img,
+a:active img {
+	background-color:transparent;
+}
+th a:link,
+th a:visited {
+	font-weight:bold;
+}
+
+/* sorting of table columns */
+/* not yet finalized for tables in topic text */
+
+th.twikiSortedAscendingCol a:link,
+th.twikiSortedAscendingCol a:visited {
+	border-top:1px solid #999; /* a neutral color that should work on light and dark backgrounds */
+}
+th.twikiSortedAscendingCol a:hover,
+th.twikiSortedAscendingCol a:hover {
+	text-decoration:none;
+	border-top:0;
+	border-bottom:1px solid #999;
+}
+th.twikiSortedDescendingCol a:link,
+th.twikiSortedDescendingCol a:visited,
+th.twikiSortedDescendingCol a:link,
+th.twikiSortedDescendingCol a:visited {
+	border-bottom:1px solid #999;
+}
+th.twikiSortedDescendingCol a:hover,
+th.twikiSortedDescendingCol a:hover {
+	text-decoration:none;
+	border-bottom:0;
+	border-top:1px solid #999;
+}
+
+/* Forms */
+
+form { 
+	display:inline;
+	margin:0;
+	padding:0;
+}
+textarea {
+	font-family:monospace;
+	font-size:100%;
+	margin:0.25em 0;
+}
+input, select {
+	font-family:verdana,arial,sans-serif;
+	padding:1px;
+	/*background-color:#E8F1F9;*/
+}
+select {
+	padding:0;
+	font-size:100%;
+}
+fieldset {
+	border:1px solid #22638c;
+	padding-left:1em;
+}
+legend {
+	padding: 0.2em 1em;
+	color:#8490A1; /* .twikiGrayText value */
+	font-size:95%;
+	border:1px solid #8490A1; /* .twikiGrayText value */
+	background-color:#f8f8f8;
+}
+label {
+	margin-left:0.5em;
+	font-size:95%;
+	line-height:125%;
+}
+
+/*	-----------------------------------------------------------
+	TWiki specific elements
+	-----------------------------------------------------------	*/
+
+.twikiMiddleContainer {}
+.twikiMain {
+	padding:0 3.5em;
+	background-color:white;
+	border-width:1px;
+	border-style:solid;
+	border-color:#ddd #ddd #ddd #ddd;
+}
+
+/* Top bar */
+
+.twikiTopBar {
+	background-color:transparent;
+}
+.twikiTopBar ul li a:link,
+.twikiTopBar ul li a:visited {
+	padding:0.25em 0.85em;
+	text-decoration:none;
+	float:left;
+	color:white;
+	font-weight:bold;
+	background-color:transparent/*#98A2B0*/;
+	margin-right:1px;
+}
+.twikiTopBar ul li a:hover {
+	background-color:#b4d5ff;
+	color:#1559B3;
+	text-decoration:underline;
+}
+.twikiTopBarContents {
+	margin:0;
+	padding:5px 2em 5px 1em; /* right padding same as .twikiViewPage .twikiMain */
+}
+
+/* Left bar */
+
+.twikiLeftBar {
+	border-top:1px solid #ddd;
+	color:#800;
+	overflow:hidden;
+	line-height:1.3em;
+}
+.twikiWebIndicator {
+	font-size:95%;
+	line-height:1.4em;
+	padding:0.3em 0;
+	background-color:#efefef; /* color variable WEBBGGCOLOR is set in twiki.pattern.tmpl */
+	color:black;
+	text-align:center;
+	border-bottom:2px solid white;
+}
+.twikiLeftBarContents {
+	font-size:95%;
+	font-weight:normal;
+	margin:0;
+	padding:1em 0 1.7em 1em;
+	width:auto;
+	border-top:3px solid #22638C;
+}
+.twikiLeftBar ul {
+	padding:0;
+	margin:0;
+}
+.twikiLeftBar strong a:link,
+.twikiLeftBar strong a:visited {
+	font-weight:bold;
+}
+.twikiLeftBar li {
+	display:block;
+	list-style:none;
+	width:100%;
+}
+.twikiLeftBar li a {
+	display:block;
+	width:98%;
+	padding-right:2%;
+}
+html>body .twikiLeftBar li a {
+	width:auto;
+}
+.twikiLeftBar hr {
+	color:#ccc;
+	background-color:#ccc;
+	height:1px;
+	border:none;
+}
+.twikiLeftBarPersonal {
+	margin:-0.5em -1px -0.5em -1em;
+	margin-top:1.5em;
+	padding:0.25em 0 0.5em 1em;
+	background-color:#DFEDFD;
+	border-top:1px solid #ccc;
+	border-bottom:1px solid #ccc;
+}
+.twikiLeftBarPersonal p {
+	margin:0.5em 0 0 0;
+}
+.twikiLeftBarPersonal a:visited {
+	color:#666;
+}
+
+/* Bottom bar */
+
+.twikiBottomBar {
+	padding-bottom:1em;
+}
+.twikiBottomBarContents {
+	padding:0.5em 2.5em 1.5em 0.5em;
+	font-size:90%;
+	line-height:140%;
+}
+
+/* Topic text */
+
+.twikiTopic {
+	padding-bottom:1.5em;
+	background-color:transparent;
+}
+.twikiTopic table {
+	width:auto;
+}
+.twikiTopic table th a:link,
+.twikiTopic table th a:visited {
+	text-decoration:none;
+}
+.twikiTopic ul {
+	margin-top:0;
+	line-height:130%;
+}
+.twikiTopic a:link {
+	text-decoration:underline;
+}
+.twikiTopic a:visited {
+	text-decoration:underline;
+	color:#666;
+}
+.twikiTopic h1 a:link,
+.twikiTopic h1 a:visited,
+.twikiTopic h2 a:link,
+.twikiTopic h2 a:visited {
+	text-decoration:none;
+	color:#1559B3;
+	border:none;
+	font-weight:bold;
+}
+.twikiTopic a:hover {
+	color:#1559B3;
+}
+
+/**	----------------------------------
+*	Attachments table, form
+*	---------------------------------- */
+
+.twikiAttachments,
+.twikiForm {
+	margin:2em 0;
+}
+.twikiAttachments table,
+.twikiForm table {
+	border-collapse:collapse;
+	padding:0px;
+	border-spacing:0px;
+	empty-cells:show;
+	border:0px;
+	font-size:90%;
+	color:#888e9c;
+	background-color:white;
+	border-top:1px solid #ccc;
+	border-right:1px solid #ccc;
+	border-left:1px solid #ccc;
+}
+.twikiAttachments table {
+	background-color:white;
+	line-height:1.4em;
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;
+}
+.twikiAttachments th,
+.twikiForm th,
+.twikiAttachments th,
+.twikiForm th {
+	padding:0.2em 0.6em;
+	height:2.5em;
+	border-color:#ccc;
+	border-left:1px solid #ccc;
+	border-bottom:1px solid #ccc;
+	background-color:white;
+	vertical-align:middle;
+}
+.twikiAttachments th.twikiFirstCol,
+.twikiForm th.twikiFirstCol {
+	border-left:none;
+	width:0px;
+}
+/* don't show any of those ugly sort icons */
+.twikiAttachments th img,
+.twikiAttachments th a:link img,
+.twikiAttachments th a:visited img {
+	display:none;
+}
+.twikiAttachments td,
+.twikiForm td {
+	border:0px;
+	border-bottom:1px solid #ccc;
+	padding:0.2em 0.6em;
+	background-color:white;
+	height:1.4em;
+	text-align:left;
+	vertical-align:top;
+}
+/*
+.twikiAttachments td {
+   white-space:nowrap;
+}
+*/
+.twikiAttachments td.twikiFirstCol,
+.twikiForm td.twikiFirstCol {
+	border-left:none;
+}
+.twikiAttachments p,
+.twikiForm p {
+	display:none;
+}
+.twikiAttachments th a:link,
+.twikiAttachments th a:visited,
+.twikiForm th a:link,
+.twikiForm th a:visited {
+	color:#1559B3;
+	border-color:#345;
+	text-decoration:none;
+}
+.twikiAttachments th font,
+.twikiForm th font {
+	color:#1559B3;
+}
+.twikiAttachments th a:hover,
+.twikiForm th a:hover {
+	text-decoration:underline;
+	background-color:transparent;
+	border-color:#345;
+}
+.twikiAttachments td a:link,
+.twikiAttachments td a:visited,
+.twikiForm td a:link,
+.twikiForm td a:visited {
+	font-weight: normal;
+}
+.twikiAttachments th.twikiSortedAscendingCol,
+.twikiAttachments th.twikiSortedDescendingCol {
+	background-color:#DADADA;
+}
+.twikiAttachments th.twikiSortedAscendingCol a:link,
+.twikiAttachments th.twikiSortedAscendingCol a:visited,
+.twikiAttachments th.twikiSortedDescendingCol a:link,
+.twikiAttachments th.twikiSortedDescendingCol a:visited {
+	color:#345;
+}
+.twikiAttachments th.twikiSortedAscendingCol a:hover,
+.twikiAttachments th.twikiSortedDescendingCol a:hover {
+	text-decoration:none;
+	background-color:transparent;
+}
+
+/* twikiTopicAction: actions buttons at bottom of page */
+
+/* If someone has enough insight or time to spare, please
+create a div based solution instead of tables */
+
+.twikiTopicAction {
+	margin:2em 0 3em 0;
+	background-color:#22638c; /* for Explorer 5.x so the whole row is blue */
+}
+.twikiTopicAction table,
+table.twikiTopicAction {
+	padding:0px;
+	border-spacing:0px;
+	border-collapse:collapse;
+	empty-cells:show;
+	border:0px;
+	font-size:95%;
+	color:white;
+	width:inherit;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;
+}
+.twikiTopicAction a:link,
+.twikiTopicAction a:visited {
+	color:white;
+	border-bottom:1px solid #698FA8;
+	text-decoration:none;
+	font-weight:bold;
+}
+.twikiTopicAction a:hover {
+	color:#1559B3;
+	border-bottom:1px solid #b4d5ff;
+}
+.twikiTopicAction tr {
+	background-color:#22638c;
+}
+.twikiTopicAction th {
+	border:none;
+}
+.twikiTopicAction td {
+	height:2em;
+	border:none;
+	padding:0.3em 1em;
+	vertical-align:middle;
+	text-align:left;
+}
+.twikiTopicAction td.twikiCancelCol {
+	text-align:left;
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:20%;
+}
+.twikiTopicAction td.twikiSubmitCol {
+	text-align:center;
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:40%;
+}
+.twikiTopicAction .twikiSubmitOptions {
+	background-color:#D4E6FC;
+	border:1px solid #B6C6D9;
+	margin:0.25em 0;
+}
+.twikiTopicAction td.twikiAddCol {
+	text-align:right;
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:20%;
+}
+.twikiTopicAction a:hover {
+	color:#1559B3;
+	border-bottom:1px solid #b4d5ff;
+}
+.twikiTopicActionSecondary {
+	padding:0.15em 0.5em 0.15em 1em;
+	background-color:white;
+}
+.twikiTopicActionHelp,
+.twikiTopicAction .twikiTopicActionHelp {
+	background-color:white;
+	padding:0;
+}
+.twikiTopicActionSecondary,
+.twikiTopicAction .twikiTopicActionSecondary {
+	background-color:#DFEDFD;
+	color:#22638c;
+	border-top:1px solid #bbb;
+}
+.twikiTopicActionSecondary td.twikiSubmitCol {
+	text-align:left;
+}
+.twikiTopicActionSecondary a:link,
+.twikiTopicActionSecondary a:visited {
+	color:#1e5bbd;
+	border-bottom:1px solid #A3BCF1;
+	text-decoration:none;
+}
+.twikiTopicActionSecondary a:hover {
+	color:#1e5bbd;
+	border-bottom:1px solid #b4d5ff;
+}
+.twikiTopicActionHelp a:link,
+.twikiTopicActionHelp a:visited  {
+	border-bottom:0px;
+}
+.twikiTopicAction .twikiSeparator {
+	display:inline;
+	color:white;
+}
+.twikiTopicAction input,
+.twikiTopicAction label {
+	font-size:100%;
+}
+
+/**	----------------------------------
+*	TOC
+*	---------------------------------- */
+
+.twikiToc {
+	display:block;
+	font-size:95%;
+	line-height:1.6em;
+	margin:1em 0 2em 0;
+	padding:0.3em 0 0.6em 0;
+	border-top:1px solid;
+	border-bottom:1px solid;
+	border-color:#ddd;
+}
+
+.twikiToc ul {
+	list-style:outside;
+	padding:0 0 0 0.5em;
+	margin:0;
+	/* list style image ref in twiki.pattern.tmpl */
+	/*list-style-image:url(/twiki/pub/TWiki/PatternSkin/i_arrow_down.gif);*/
+}
+.twikiToc li {
+	margin-left:2em;
+}
+.twikiToc .twikiTocTitle {
+	margin:0;
+	padding:0;
+	font-weight:bold;
+	color:#666;
+}
+.twikiToc a:link,
+.twikiToc a:visited {
+	text-decoration:none;
+	color:#1e5bbd;
+	border:0;
+}
+.twikiToc a:hover {
+	text-decoration:underline;
+}
+.twikiToc li a {
+	display:block;	
+	width:100%;
+}
+html>body .twikiToc li a {
+	width:auto;
+}
+
+/* Topic info */
+
+.twikiTopicInfo {
+	margin:0.5em 0 0 0;
+}
+
+/* Revision info */
+
+.twikiRevInfo {
+	display:block;
+	font-size:95%;
+}
+.twikiRevInfo em,
+.twikiRevInfo i {
+	font-style:normal;
+}
+
+/* Footer */
+
+.twikiTopicFooter {
+	display:block;
+	margin-top:1em;
+	padding-bottom:2em;
+}
+
+/* Homepath */
+
+.twikiHomePath {
+	font-size:90%;
+}
+.twikiHomePath a:hover {
+	text-decoration:underline;
+}
+
+/* Tool bar at top of topic */
+
+.twikiToolBar {
+	display:block;
+	padding:0.3em 0 1em 0;
+	margin-left:-0.55em; /* same amount as button padding */
+	margin-bottom:0.5em;
+}
+.twikiToolBar p {
+	clear:both;
+	height:0;
+	display:none;
+}
+.twikiToolBar ul {
+	display:inline;
+	padding:0;
+	margin:0;
+	float:left;
+	font-size:95%;
+}
+.twikiToolBar ul li {
+	display:inline;
+	color:#8490A1; /* .twikiGrayText value */
+	font-weight:bold;
+	background-color:transparent;
+}
+.twikiToolBar ul li s,
+.twikiToolBar ul li strike {
+	padding:0 0.55em;
+	float:left;
+}
+.twikiToolBar ul li a:link,
+.twikiToolBar ul li a:visited {
+	padding:0 0.55em;
+	float:left;
+	text-decoration:none;
+	color:#8490A1; /* .twikiGrayText value */
+	font-weight:bold;
+}
+.twikiToolBar ul li a:hover {
+	background-color:#b4d5ff;
+	color:#1559B3;
+	text-decoration:none;
+}
+.twikiToolBar .twikiRevInfo {
+	text-align:right;
+}
+.twikiToolbarElem {
+	margin-left:0.7em;
+}
+
+/* page nav:top to, to bottom */
+
+.twikiPageNav {
+	font-size:95%;
+	font-weight:bold;
+	margin-left:1em;
+	margin-bottom:1em;
+}
+
+/* Moved message */
+
+.twikiMoved {}
+
+/* search box */
+
+.twikiSearchBox {
+	color:#8490A1; /* .twikiGrayText value */
+}
+.twikiSearchBox td {
+	height:50px;
+	vertical-align:middle;
+	background-color:transparent;
+	text-align:right;
+}
+.twikiSearchBox input {
+	border:1px solid #ccc;
+}
+
+/* table used in various places */
+
+.twikiVersatileTable table {
+	width:auto;
+	padding:0px;
+	border-spacing:0px;
+	border-collapse:collapse;
+	empty-cells:show;
+	border:0px;
+	border:1px solid #ccc;
+	margin-top:1em;
+	font-size:95%;
+}
+.twikiVersatileTable th,
+.twikiVersatileTable td {
+	vertical-align:top;
+	border:0px;
+	border-top:1px solid #ccc;
+}
+.twikiVersatileTable td {
+	padding:0.2em 0.5em;
+	background-color:#F5F7FD;
+}
+.twikiVersatileTable th {
+	padding:0.5em 0.5em;
+	vertical-align:top;
+	font-weight:bold;
+	background-color:#E0E9F7;
+}
+.twikiVersatileTable .twikiMainCol {
+	background-color:white;
+}
+.twikiVersatileTable .twikiOldCol {
+	background-color:#E9E9E9;
+}
+.twikiVersatileTable input {
+	background-color:white;
+}
+.twikiVersatileTable input.twikiCheckbox {
+	background-color:transparent;
+}
+
+/*	-----------------------------------------------------------
+	Other styles
+	-----------------------------------------------------------	*/
+
+.twikiSeparator {
+	font-family:Arial,sans-serif;
+}
+.twikiHelp ul {
+	margin-top:0;
+	margin-bottom:0;
+}
+.twikiSubmit,
+.twikiButton {
+	font-size:90%;
+	font-weight:normal;
+	padding:0;
+	margin:0 0.15em;
+}
+.twikiSubmit {
+	color:#041D3A;
+	background-color:#f2f2f2;
+	border-top:1px solid #fff;
+	border-right:1px solid #333;
+	border-bottom:1px solid #333;
+	border-left:1px solid #fff;
+}
+.twikiButton {
+	color:#05264D;
+	background-color:#f2f2f2;
+	border:1px solid #aaa;
+}
+.twikiCheckbox,
+.twikiRadioButton {
+	border:none;
+	background-color:transparent;
+}
+.twikiTopic .twikiSubmit { /* topic submit button */
+	background-color:#E8F1F9;
+}
+.twikiSecondary { }
+.twikiTertiary {
+	background-color:#B9D6FA;
+}
+.twikiCancel { /* cancel button */
+	background-color:#eee;
+}
+.twikiBroadcastMessage {
+	background-color:#ff0;
+	color:black;
+	padding:0.2em 0.7em;
+	margin:0 -0.7em 0.5em -0.7em;
+}
+.twikiBroadcastMessage b,
+.twikiBroadcastMessage strong {
+	color:#f00;
+}
+.twikiAlert {
+	color:#f00;
+}
+.twikiGrayText,
+.twikiHelpCol {
+	color:#8490A1;
+}
+.twikiGrayText a:link,
+.twikiGrayText a:visited,
+.twikiHelpCol a:link,
+.twikiHelpCol a:visited {
+	color:#8490A1; /* .twikiGrayText value */
+	text-decoration:underline;
+}
+.twikiGrayText a:hover,
+.twikiHelpCol a:hover{
+	color:#1559B3;
+}
+.twikiSmall {
+	font-size:85%;
+}
+.twikiNew { }
+.twikiSummary {
+	font-size:85%;
+	line-height:1.3em;
+}
+.twikiNewLink {
+	background-color:transparent;
+}
+
+/*	-----------------------------------------------------------
+	Search results
+	styles and overridden styles used in search.pattern.tmpl
+	-----------------------------------------------------------	*/
+	
+.twikiSearchResults {}
+.twikiSearchResultsHeader,
+.twikiSearchString {
+	padding:0.2em 0.7em 0.2em 0.7em;
+	margin:0.15em -0.7em 0.25em -0.7em;
+	font-weight:bold;
+	background-color:#F3EDE7;
+	border-bottom:1px solid #ccc;
+}
+.twikiSearchString {
+	background-color:transparent;
+	margin-bottom:1em;
+	border-bottom:0px;
+}
+.twikiSearchResults table {
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;
+}
+.twikiSearchResults .twikiTopRow {
+	padding-top:0.2em;
+}
+.twikiSearchResults .twikiBottomRow {
+	padding-bottom:0.25em;
+	border-bottom:1px solid #ddd;
+}
+.twikiSearchResults .twikiAlert {
+	color:#f00;
+	font-weight:bold;
+}
+.twikiSearchResults .twikiSummary .twikiAlert {
+	color:#900;
+	font-weight:normal;
+}
+.twikiSearchResults .twikiNew b {
+	font-weight:normal;
+}
+.twikiSearchResultCount {
+	margin:0.5em 0 2em 0;
+	font-size:95%;
+}
+.twikiViewPage .twikiSearchResultsBegin { /* for changes template with noheader="on" */
+	height:1px;
+	border-bottom:1px solid #ddd;
+}
+
+/* Search results in book view format */
+
+.twikiBookViewList .twikiSearchResultsHeader {
+	margin-bottom:1em;
+}
+.twikiBookViewList .twikiTopRow {
+	padding:0.2em 0.7em 0.2em 0.7em;
+	margin:2.5em -0.7em 0.15em -0.7em;
+	background-color:#22638c;
+	color:#ccc;
+}
+.twikiBookViewList .twikiTopRow a:link, 
+.twikiBookViewList .twikiTopRow a:visited {
+	color:white;
+}
+.twikiBookViewList .twikiTopRow a:hover {
+	color:#1e5bbd;
+}
+.twikiBookViewList .twikiBottomRow {
+	font-size:100%;
+	padding:1em 0;
+	border-color:#ddd;
+}
+.twikiBookViewList .twikiBottomRow {
+	width:auto;
+}
+.twikiBookViewList .twikiSearchResultCount {
+	color:#22638c;
+}
+
+
+/*	-----------------------------------------------------------
+	View
+	styles and overridden styles used in twiki.pattern.tmpl and view.pattern.tmpl
+	-----------------------------------------------------------	*/
+
+.twikiViewPage .twikiMain {
+	padding-right:2em;
+}
+.twikiViewPage .twikiAttachments,
+.twikiViewPage .twikiForm,
+.twikiPreviewPage .twikiAttachments,
+.twikiPreviewPage .twikiForm {
+	background-color:#f1f1f1;
+	padding:2em;
+	border-top:1px solid #bbb;
+	margin-top:0;
+	margin-bottom:0em;
+}
+.twikiViewPage .twikiTopicAction,
+.twikiDiffPage .twikiTopicAction {
+	margin:0 0 1.5em 0;
+	padding:0.5em 2em 0.6em 2em;
+	border:none;
+	font-size:95%;
+	line-height:1.5em;
+	color:white;
+	font-weight:normal;
+	background-color:#98A2B0;
+}
+.twikiViewPage .twikiTopicAction a:link,
+.twikiViewPage .twikiTopicAction a:visited,
+.twikiDiffPage .twikiTopicAction a:link,
+.twikiDiffPage .twikiTopicAction a:visited {
+	border-bottom:1px solid #ccc;
+	text-decoration:none;
+	font-weight:bold;
+	color:white;
+}
+.twikiViewPage .twikiTopicAction a:hover,
+.twikiDiffPage .twikiTopicAction a:hover {
+	text-decoration:none;
+	border-bottom:1px solid #b4d5ff;
+	color:#1559B3;
+}
+.twikiViewPage .twikiTopicAction a:active,
+.twikiDiffPage .twikiTopicAction a:active {
+	color:white;
+}
+
+/*	-----------------------------------------------------------
+	Pages that are not view
+	-----------------------------------------------------------	*/
+
+.twikiNoViewPage .twikiMain {
+	padding-top:2.5em;
+	padding-bottom:2em;
+}
+.twikiNoViewPage h1 {
+	font-size:170%; /* as big as h2 in topic */
+}
+.twikiNoViewPage .twikiMain {
+	border-top:0px;
+}
+
+/*	-----------------------------------------------------------
+	Edit
+	styles and overridden styles used in edit.pattern.tmpl
+	-----------------------------------------------------------	*/
+
+.twikiEditPage .twikiFormHolder { /* constrains the width of the textarea */
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;
+}
+.twikiEditPage textarea {
+	background-color:#FCFAF7;
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;
+}
+.twikiEditPage .twikiHelp {
+	margin-top:2em;
+	border-top:1px solid #ccc;
+}
+.twikiEditPage .twikiHelp code {
+	color:#900;
+}
+.twikiEditPage table.twikiChangeFormButtonHolder {
+	margin-bottom:0.5em;
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;
+}
+.twikiChangeFormButton {
+	padding:0;
+	margin:0;
+	color:#888;
+	font-size:90%;
+	background-color:transparent;
+	border:none;
+}
+.twikiEditPage .twikiEditForm {
+	margin-top:1.5em;
+}
+.twikiEditPage .twikiEditForm table {
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;
+}
+.twikiEditPage .twikiEditForm th {
+	border-left:none;
+	background-color:#E0E9F7; /*#EFEDEA;*/
+	padding-left:1em;
+	color:black;
+}
+.twikiEditPage .twikiEditForm td {
+	border-left:1px solid #ddd;
+	padding-right:1em;
+	padding-left:0.5em;
+	background-color:#F5F7FD; /*#E8F1F9;*/
+	vertical-align:middle;
+}
+.twikiEditPage .twikiEditForm input,
+.twikiEditPage .twikiEditForm select {
+	font-size:100%;
+}
+.twikiEditPage .twikiEditFormTextField {
+	width:auto;
+}
+.twikiEditPage .twikiSig {
+	margin:0.5em 0;
+}
+.twikiEditPage .twikiSig input {
+	background-color:#EFEDEA;
+	border:1px solid #ddd;
+	padding:2px;
+	width:25em;
+	font-family:monospace;
+	font-size:100%;
+}
+.twikiEditPage .twikiTopicAction {
+	margin-top:0;
+}
+
+/*	-----------------------------------------------------------
+	Preview
+	styles and overridden styles used in preview.pattern.tmpl
+	-----------------------------------------------------------	*/
+	
+.twikiPreviewPage .twikiMain {
+	background-color:transparent;
+}
+.twikiPreviewPage .twikiTopic {
+	padding-top:1.5em;
+}
+.twikiPreviewPage .twikiPreviewArea {
+	background-color:white;
+	border:1px solid #22638c;
+	margin:1em -2em 0 -2em;
+	padding:0 2em 1em 2em;
+}
+.twikiPreviewPage .twikiHelp ul {
+	margin-top:0;
+}
+.twikiPreviewPage .twikiTopic h1 {
+	font-size:210%; /* restore original size */
+}
+	
+/*	-----------------------------------------------------------
+	Attach
+	styles and overridden styles used in attach.pattern.tmpl
+	-----------------------------------------------------------	*/
+
+.twikiAttachPage .twikiVersatileTable table {
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;	
+}
+.twikiAttachPage .twikiVersatileTable th,
+.twikiAttachPage .twikiVersatileTable td {
+	padding:0.7em 1em 0.7em 1.25em;
+}
+.twikiAttachPage .twikiVersatileTable th {
+	text-align:left;
+	width:12em;
+	padding-left:1em;
+}
+.twikiAttachPage .twikiVersatileTable td.twikiHelpCol {
+	width:17em;
+}
+.twikiAttachPage .twikiTopicAction {
+	margin:2em 0 1em 0;
+}
+.twikiAttachPage .twikiHelp {
+	margin:2em 0 3em 0;
+}
+.twikiAttachPage .twikiHelp ul {
+	padding:0;
+	margin:1em 0 0 0;
+}
+.twikiAttachPage .twikiHelp ul li {
+	list-style:none;
+	line-height:150%;
+}
+.twikiAttachPage .twikiPrevious .twikiAttachments table {
+	width:auto;
+	color:black;
+}
+.twikiAttachPage .twikiTopic {
+	padding-bottom:0;
+}
+
+/*	-----------------------------------------------------------
+	ChangeForm
+	styles and overridden styles used in attach.pattern.tmpl
+	-----------------------------------------------------------	*/
+
+.twikiChangeFormPage .twikiVersatileTable table {
+	width:auto;
+}
+.twikiChangeFormPage .twikiVersatileTable th {
+	text-align:left;
+	padding:0.25em 1em;
+}
+.twikiChangeFormPage .twikiVersatileTable td {
+	padding:1em;
+}
+.twikiChangeFormPage .twikiVersatileTable ul {
+	margin:0;
+	padding:0;
+}
+.twikiChangeFormPage .twikiVersatileTable li {
+	list-style:inside;
+	margin:0;
+	padding:0;
+}
+
+/*	-----------------------------------------------------------
+	Rename
+	styles and overridden styles used in rename.pattern.tmpl
+	-----------------------------------------------------------	*/
+	
+.twikiRenamePage .twikiVersatileTable {
+	margin-bottom:3em;
+}
+.twikiRenamePage .twikiVersatileTable table {
+	width:auto;
+	voice-family: "\"}\""; /* hide the following for Explorer 5.x */
+	voice-family:inherit;
+	width:100%;	
+}
+.twikiRenamePage .twikiVersatileTable th {
+	text-align:right;
+	padding-left:2em;
+}
+.twikiRenamePage .twikiVersatileTable td {
+	padding:0.5em 0.5em;
+}
+.twikiRenamePage .twikiVersatileTable .twikiHelpCol {
+	width:22em;
+}
+.twikiRenamePage .twikiVersatileTable th.lastRow,
+.twikiRenamePage .twikiVersatileTable td.lastRow {
+	border-top:none;
+}
+.twikiRenamePage .twikiHelp {
+	margin:1em 0 1em 0;
+	padding:0.25em 0 0.5em 0;
+}
+.twikiRenamePage .twikiTopicActionSecondary {
+	margin:1.5em 0;
+}
+
+/*	-----------------------------------------------------------
+	Diff
+	styles and overridden styles used in rdiff.pattern.tmpl
+	-----------------------------------------------------------	*/
+
+.twikiDiffPage table {
+	width:auto;
+}
+.twikiDiffPage .twikiSearchResultsHeader {
+	border-bottom:0;
+}
+.twikiDiffPage .twikiSearchResults {
+	padding-bottom:3em;
+}
+.twikiDiffPage .twikiDiffTable th,
+.twikiDiffPage .twikiDiffTable td {
+	padding:0.1em;
+}
+
+/* Deleted */
+
+.twikiDiffPage .twikiDiffDeletedHeader {
+	background-color:#FF3000;
+	color:white;
+	padding-left:1em;
+}
+.twikiDiffPage .twikiDiffDeletedMarker {
+	background-color:#FF3000;
+}
+.twikiDiffPage .twikiDiffDeletedText {
+	background-color:#FFEAE5;
+}
+
+/* Added */
+
+.twikiDiffPage .twikiDiffAddedHeader {
+	background-color:#3DB234;
+	color:white;
+	padding-left:1em;
+}
+.twikiDiffPage .twikiDiffAddedMarker {
+	background-color:#3DB234;
+}
+.twikiDiffPage .twikiDiffAddedText {
+	background-color:#EBF7EA;
+}
+
+/* Changed */
+
+.twikiDiffPage th.twikiDiffChangedHeader,
+.twikiDiffPage td.twikiDiffChangedHeader {
+	background-color:#98A2B0;
+	color:white;
+	padding-left:1em;
+	text-align:center;
+}
+.twikiDiffPage .twikiDiffChangedText {}
+
+/* Unchanged */
+
+.twikiDiffPage .twikiDiffUnchangedText {}
+.twikiDiffPage .twikiDiffUnchangedTextContents { }
+.twikiDiffPage .twikiDiffLineNumberHeader {
+	margin:2em 0;
+	background-color:#ddd;
+}
+
+/*	-----------------------------------------------------------
+	Print
+	styles and overridden styles used in print.pattern.tmpl
+	-----------------------------------------------------------	*/
+	
+.twikiPrintPage .twikiMain {
+	border-left:0;
+	border-top:0;
+	padding-top:2em;
+}
+.twikiPrintPage h2 {
+	border-bottom:1px solid #900;
+}
+.twikiPrintPage .twikiAttachments,
+.twikiPrintPage .twikiForm {
+	background-color:#ddd;
+}
+
+/*	-----------------------------------------------------------
+	Plain
+	styles and overridden styles used in plain.pattern.tmpl
+	-----------------------------------------------------------	*/
+	
+.twikiPlainPage .twikiMain {
+	padding-top:2.5em;
+	padding-bottom:2em;
+}
\ No newline at end of file
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/runMacros2.C b/Calorimeter/CaloExample/CaloRecEx/share/runMacros2.C
new file mode 100755
index 00000000000..343c9a442b8
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/runMacros2.C
@@ -0,0 +1,20 @@
+
+#include "TSystem.h"
+
+void runMacros2()
+{
+  int nbTests=2;
+  string macros[]={"CaloRecEx_dump2.C","runPython2.C"};
+
+  ofstream chkfile("runMacros.txt",ios::out);	
+  
+  for(int i=0;i<nbTests;i++)
+    {
+      string com;
+      chkfile << "Run " << macros[i] << std::endl;
+      com="root.exe -b -q "+macros[i];
+      gSystem->Exec(com.c_str());
+      chkfile << "Run " << macros[i] << " Done." << std::endl;
+    }
+  chkfile.close();
+}
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/runMacros2R.C b/Calorimeter/CaloExample/CaloRecEx/share/runMacros2R.C
new file mode 100644
index 00000000000..64b2568e548
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/runMacros2R.C
@@ -0,0 +1,20 @@
+
+#include "TSystem.h"
+
+void runMacros2R()
+{
+  int nbTests=2;
+  string macros[]={"CaloRecEx_dump2.C","runPython2R.C"};
+
+  ofstream chkfile("runMacros2R.txt",ios::out);	
+  
+  for(int i=0;i<nbTests;i++)
+    {
+      string com;
+      chkfile << "Run " << macros[i] << std::endl;
+      com="root.exe -b -q "+macros[i];
+      gSystem->Exec(com.c_str());
+      chkfile << "Run " << macros[i] << " Done." << std::endl;
+    }
+  chkfile.close();
+}
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/runPython2.C b/Calorimeter/CaloExample/CaloRecEx/share/runPython2.C
new file mode 100755
index 00000000000..99d2b0a4dd9
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/runPython2.C
@@ -0,0 +1,24 @@
+
+#include "TSystem.h"
+
+void runPython2()
+{
+  int nbTests=1;
+  string macros[]={"check.py"};
+  ofstream chkfile("runPython2.txt",ios::out);	
+  std::cout << "LD_LIBRARY_PATH is " << gSystem->Getenv("LD_LIBRARY_PATH") << std::endl;
+  std::cout << "PATH is " << gSystem->Getenv("PATH") << std::endl;
+
+  for(int i=0;i<nbTests;i++)
+    {
+      string com;
+      chkfile << "Run " << macros[i] << std::endl;
+      com="python "+macros[i];
+      gSystem->Exec(com.c_str());
+      chkfile << "Run " << macros[i] << " Done." << std::endl;
+    }
+  chkfile.close();
+
+}
+
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/runPython2R.C b/Calorimeter/CaloExample/CaloRecEx/share/runPython2R.C
new file mode 100644
index 00000000000..8fce1c0eca9
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/runPython2R.C
@@ -0,0 +1,24 @@
+
+#include "TSystem.h"
+
+void runPython2R()
+{
+  int nbTests=1;
+  string macros[]={"checkR.py"};
+  ofstream chkfile("runPython2R.txt",ios::out);	
+  std::cout << "LD_LIBRARY_PATH is " << gSystem->Getenv("LD_LIBRARY_PATH") << std::endl;
+  std::cout << "PATH is " << gSystem->Getenv("PATH") << std::endl;
+
+  for(int i=0;i<nbTests;i++)
+    {
+      string com;
+      chkfile << "Run " << macros[i] << std::endl;
+      com="python "+macros[i];
+      gSystem->Exec(com.c_str());
+      chkfile << "Run " << macros[i] << " Done." << std::endl;
+    }
+  chkfile.close();
+
+}
+
+
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/top_calib1_csc11_005200_T1_McAtNlo_JimmyChecks.py b/Calorimeter/CaloExample/CaloRecEx/share/top_calib1_csc11_005200_T1_McAtNlo_JimmyChecks.py
new file mode 100644
index 00000000000..4eda2d15582
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/top_calib1_csc11_005200_T1_McAtNlo_JimmyChecks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=True
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/top_valid1_005200_T1_McAtNlo_JimmyChecks.py b/Calorimeter/CaloExample/CaloRecEx/share/top_valid1_005200_T1_McAtNlo_JimmyChecks.py
new file mode 100644
index 00000000000..4eda2d15582
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/top_valid1_005200_T1_McAtNlo_JimmyChecks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=True
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/top_valid1_105200_T1_McAtNlo_JimmyChecks.py b/Calorimeter/CaloExample/CaloRecEx/share/top_valid1_105200_T1_McAtNlo_JimmyChecks.py
new file mode 100644
index 00000000000..4eda2d15582
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/share/top_valid1_105200_T1_McAtNlo_JimmyChecks.py
@@ -0,0 +1,9 @@
+
+doHistoComparison=True
+doTruth=True
+doMemLeak=True
+doextractRec=True
+docheckAODESDcontent=False
+docheckAODESDcontentAOD=False
+docheckAODESDcontentESD=False
+doPerfMon=True
diff --git a/Calorimeter/CaloExample/CaloRecEx/test/CaloRecEx_TestConfiguration.xml b/Calorimeter/CaloExample/CaloRecEx/test/CaloRecEx_TestConfiguration.xml
new file mode 100755
index 00000000000..4df5564042b
--- /dev/null
+++ b/Calorimeter/CaloExample/CaloRecEx/test/CaloRecEx_TestConfiguration.xml
@@ -0,0 +1,503 @@
+<?xml version="1.0"?>
+<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd">
+
+<unifiedTestConfiguration>
+
+<atn>
+ <TEST name="CaloRecEx" type="athena" suite="CaloRecEx">
+    <options_atn>CaloRecEx/CaloRecEx_topOptions.py</options_atn>
+    <author>Emmanuel Le Guirriec, Helenka Przysiezniak</author>
+<mailto>guirriec@cern.ch,toth@cppm.in2p3.fr,jtoth@rmki.kfki.hu</mailto>
+    <prescript>RecExCommon_links.sh</prescript>
+    <package_atn>Calorimeter/CaloExample/CaloRecEx</package_atn>
+    <expectations>
+       <successMessage>Finalized successfully</successMessage>
+    </expectations>
+</TEST>
+
+
+</atn>
+
+   <kv/>		
+
+   <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt">
+
+      <rttContactPerson>Emmanuel Le Guirriec</rttContactPerson>
+<mailto>guirriec@cern.ch,toth@cppm.in2p3.fr,jtoth@rmki.kfki.hu</mailto>
+
+      <refRelease>10.0.1</refRelease>
+   
+      <jobList>
+    
+<classification>
+     <displayClass>OfflineValidation</displayClass>
+     <displayProcess>Reco</displayProcess>
+     <displayComponent>Det-LAr</displayComponent>
+</classification>
+
+  
+<athena userJobId="calib0_csc11_007062_singlepart_gamma_E50">
+<doc>Reco with Calo only, CBNTAA ntuple produced,calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+            <options>CaloRecEx_RTT_calib0_csc11_007062_singlepart_gamma_E50.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANT</group>
+            <queue>medium</queue>
+          
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00001.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00002.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00003.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00004.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00005.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00006.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00007.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00008.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00009.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007062.singlepart_gamma_E50.digit.RDO.v12000301_tid003215._00010.pool.root</dataset>
+         </athena>
+
+
+<athena userJobId="calib0_csc11_007085_singlepart_gamma_E500">
+<doc>Reco with Calo only, CBNTAA ntuple produced,calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+            <options>CaloRecEx_RTT_calib0_csc11_007085_singlepart_gamma_E500.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANT</group>
+            <queue>medium</queue>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00001.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00002.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00003.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00004.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00005.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00006.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00007.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00008.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00009.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301/calib0_csc11.007085.singlepart_gamma_E500.digit.RDO.v12000301_tid003315._00010.pool.root.1</dataset>
+         </athena>
+
+
+<athena userJobId="calib0_csc11_007080_singlepart_gamma_E5">
+<doc>Reco with Calo only, CBNTAA ntuple produced,calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+            <options>CaloRecEx_RTT_calib0_csc11_007080_singlepart_gamma_E5.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANT</group>
+            <queue>medium</queue>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00001.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00002.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00003.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00004.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00005.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00006.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00007.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00008.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/enzuobon/RTT/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00009.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00010.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00011.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00012.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00013.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00015.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00016.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00017.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00018.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00019.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00020.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00021.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00022.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00023.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00024.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00025.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00026.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00027.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00028.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00030.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00031.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00032.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00033.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00034.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00035.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00036.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00037.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00038.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00039.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00040.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00041.pool.root</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301/calib0_csc11.007080.singlepart_gamma_E5.digit.RDO.v12000301_tid003309._00042.pool.root</dataset>
+         </athena>
+
+<athena userJobId="calib0_csc11_007070_singlepart_e_E5">
+<doc>Reco with Calo only, CBNTAA ntuple produced,calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+            <options>CaloRecEx_RTT_calib0_csc11_007070_singlepart_e_E5.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANT</group>
+            <queue>medium</queue>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00001.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00002.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00003.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00004.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00005.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00006.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00007.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00008.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00009.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00010.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00011.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00012.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00013.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00014.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00015.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00016.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00017.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00018.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00019.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00020.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00021.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00022.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00023.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00024.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00025.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00026.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00027.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00028.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00029.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00030.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00031.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00033.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00034.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00035.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00036.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00037.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00040.pool.root.2</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301/calib0_csc11.007070.singlepart_e_E5.digit.RDO.v12000301_tid003296._00041.pool.root.2</dataset>
+         </athena>
+
+<athena userJobId="calib1_csc11_005200_T1_McAtNlo_Jimmy">
+<doc>Reco with Calo only, CBNTAA ntuple produced,calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+            <options>CaloRecEx_RTT_calib1_csc11_005200_T1_McAtNlo_Jimmy.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANT</group>
+            <queue>medium</queue>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00001.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00002.pool.root.6</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00003.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00004.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00005.pool.root.13</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00006.pool.root.1</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00007.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00008.pool.root.6</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00009.pool.root.12</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00010.pool.root.9</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00011.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00012.pool.root.14</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00013.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00014.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00015.pool.root.6</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00016.pool.root.10</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00017.pool.root.8</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00018.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00019.pool.root.4</dataset>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301/calib1_csc11.005200.T1_McAtNlo_Jimmy.digit.RDO.v12000301_tid003138._00020.pool.root.4</dataset>
+   </athena>
+
+
+
+
+<athena userJobId="csc11_007061_singlepart_e_E100">
+<doc>Reco with Calo only, CBNTAA ntuple produced,calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+         <options>CaloRecEx_RTT_calib1_csc11_007061_singlepart_e_E100.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANT</group>
+          <queue>medium</queue>
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00001.pool.root.4</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00002.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00003.pool.root.2</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00004.pool.root.3</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00005.pool.root.2</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00006.pool.root.3</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00007.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00008.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00009.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00010.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00011.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00012.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00013.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00014.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00015.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00016.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00017.pool.root.2</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00018.pool.root.2</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00019.pool.root.1</dataset> 
+<dataset>/eos/atlas/atlascerngroupdisk/proj-sit/rtt/RTTdata/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301/calib1_csc11.007061.singlepart_e_E100.digit.RDO.v12000301_tid003125._00020.pool.root.1</dataset> 
+        </athena>
+
+
+<athena userJobId="mc10_7TeV_107061_singlepart_e_E100">
+<doc>Reco with Calo only, CBNTAA ntuple produced,200 events from HITS.171045._000524.pool.root.1 in mc10_7TeV.107061.singlepart_e_E100.merge.HITS.e610_s933_s946/,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+         <options>CaloRecEx_RTT_mc10_7TeV_107061_singlepart_e_E100.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANT</group>
+          <queue>medium</queue>
+	  <dataset_info>
+		 <dc2 />
+		 <datasetName>/afs/cern.ch/atlas/project/lar/calo_data/rtt/rec/mc10_7TeV.107061.singlepart_e_E100.RDO.e610_s933_s946_tid171045._000524.pool.root</datasetName>   
+	  </dataset_info>
+	<athenaCommonFlags />
+        </athena>
+
+<athena userJobId="valid1_105200_T1_McAtNlo_Jimmy">
+<doc>Reco with Calo only, D3PD ntuple produced,valid1.105200.T1_McAtNlo_Jimmy.digit.RDO.e850_s1332_d699_tid763483,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+          <options>CaloRecEx_RTT_valid1_105200_T1_McAtNlo_Jimmy.py</options>
+          <package>Calorimeter/CaloExample/CaloRecEx</package>
+          <group>CaloRecExAANT</group>
+          <queue>medium</queue>
+	  <dataset_info>
+		 <dc2 />
+		 <datasetName>/eos/atlas/atlasdatadisk/valid1/RDO/e850_s1332_d699/valid1.105200.T1_McAtNlo_Jimmy.digit.RDO.e850_s1332_d699_tid763483_00/RDO.763483._000001.pool.root.1</datasetName>   
+	  </dataset_info>
+	  <dataset_info>
+		 <dc2 />
+		 <datasetName>/eos/atlas/atlasdatadisk/valid1/RDO/e850_s1332_d699/valid1.105200.T1_McAtNlo_Jimmy.digit.RDO.e850_s1332_d699_tid763483_00/RDO.763483._000002.pool.root.1</datasetName>   
+	  </dataset_info>
+	<athenaCommonFlags />
+        </athena>
+
+
+<athena userJobId="data11_7TeV_191933_physics_Egamma">
+<doc>Reco with Calo only, D3PD ntuple produced,valid1.105200.T1_McAtNlo_Jimmy.digit.RDO.e850_s1332_d699_tid763483,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+          <options>CaloRecEx_RTT_physics_Egamma.py</options>
+          <package>Calorimeter/CaloExample/CaloRecEx</package>
+          <group>CaloRecExAANT</group>
+          <queue>medium</queue>
+	  <dataset_info>
+		 <bytestream />
+		 <datasetName>/eos/atlas/atlasgroupdisk/det-larg/user/guirriec/data11_7TeV/user.guirriec.data11_7TeV.00191933.physics_Egamma.merge.RAW_der1354092302/data11_7TeV.00191933.physics_Egamma.merge.RAW._lb0194._SFO-9._0001.1</datasetName>   
+	  </dataset_info>
+	<athenaCommonFlags />
+        </athena>
+
+<athena userJobId="data12_8TeV_202798_physics_Egamma">
+<doc>Reco with Calo only, D3PD ntuple produced,,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+          <options>CaloRecEx_RTT_physics_Egamma.py</options>
+          <package>Calorimeter/CaloExample/CaloRecEx</package>
+          <group>CaloRecExAANT</group>
+          <queue>medium</queue>
+	  <dataset_info>
+		 <bytestream />
+		 <datasetName>/eos/atlas/atlasgroupdisk/det-larg/user/guirriec/data12_8TeV/user.guirriec.data12_8TeV.00202798.physics_Egamma.merge.RAW_der1354092302/data12_8TeV.00202798.physics_Egamma.merge.RAW._lb0446._SFO-ALL._0001.1</datasetName>   
+	  </dataset_info>
+	  <dataset_info>
+		 <bytestream />
+		 <datasetName>/eos/atlas/atlasgroupdisk/det-larg/user/guirriec/data12_8TeV/user.guirriec.data12_8TeV.00202798.physics_Egamma.merge.RAW_der1354092302/data12_8TeV.00202798.physics_Egamma.merge.RAW._lb0447._SFO-ALL._0001.1</datasetName>   
+	  </dataset_info>
+	<athenaCommonFlags />
+        </athena>
+
+<athena userJobId="physics_cosmics">
+<doc>Reco with Calo only, CBNTAA ntuple produced,2008_run91900_physics_IDCosmic,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+            <options>CaloRecEx_RTT_physics_cosmics.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANTReal</group>
+            <queue>medium</queue>
+         </athena>
+
+<athena userJobId="physics_MinBias">
+<doc>Reco with Calo only, CBNTAA ntuple produced,2008_run87851_physics_BPTX,https://twiki.cern.ch/twiki/bin/view/Atlas/CaloIntegration</doc>
+            <options>CaloRecEx_RTT_physics_MinBias.py</options>
+            <package>Calorimeter/CaloExample/CaloRecEx</package>
+            <group>CaloRecExAANTReal</group>
+            <queue>medium</queue>
+         </athena>
+
+      </jobList>
+      
+      <jobGroups>
+   
+  <jobGroup name="AthenaCaloRecExAANT" parent="AthenaRecExCommon">
+               <keepFilePattern>*.root</keepFilePattern>
+               <keepFilePattern>*.hist</keepFilePattern>
+               <keepFilePattern>*.ps</keepFilePattern>
+               <keepFilePattern>*.pdf</keepFilePattern>
+               <keepFilePattern>*.txt</keepFilePattern>
+               <keepFilePattern>*.gif</keepFilePattern>
+               <keepFilePattern>*.html</keepFilePattern>
+               <keepFilePattern>*.log</keepFilePattern>
+               <keepFilePattern>rtt.css</keepFilePattern>
+               <keepFilePattern displayColor="green">checks.html</keepFilePattern>
+               <keepFilePattern>*.pmon.gz</keepFilePattern>
+
+               <auxFilePattern>CaloRecEx*.C</auxFilePattern>
+               <auxFilePattern>CaloRecEx_runMacro*.C</auxFilePattern>
+               <auxFilePattern>CaloRecEx_runPython2.C</auxFilePattern>
+               <auxFilePattern>rtt.css</auxFilePattern>
+               <auxFilePattern>CaloRecEx_HistoComparison.txt</auxFilePattern>
+               <auxFilePattern>CaloRecEx_check.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_HistoComparison.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_Truth.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_memleak.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_checkAODESDcontent.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_extractRec.py</auxFilePattern>
+               <auxFilePattern>myperfmon.py</auxFilePattern>
+               <auxFilePattern>*Checks.py</auxFilePattern>
+
+<action>
+            <modulename>RttLibraryTools</modulename>
+            <testname>ROOTMacroRunner</testname>
+            <arg>
+               <argname>macro</argname>
+               <argvalue>CaloRecEx_runMacros2.C</argvalue>
+            </arg>
+         </action>
+
+
+<action> 
+            <modulename>RttLibraryTools</modulename> 
+            <testname>FileGrepper</testname> 
+            <arg> 
+               <argname>inputFile</argname> 
+               <argvalue>*_log</argvalue> 
+            </arg> 
+            <arg> 
+               <argname>outputFile</argname> 
+               <argvalue>errMessages.txt</argvalue> 
+            </arg> 
+<arg> 
+              <argname>searchList</argname>
+              <argvalue>ERROR,FATAL,WARNING</argvalue>
+</arg> 
+         </action>
+
+
+
+<action> 
+            <modulename>RttLibraryTools</modulename> 
+            <testname>FileGrepper</testname> 
+            <arg> 
+                 <argname>inputFile</argname> 
+               <argvalue>*_log</argvalue> 
+            </arg> 
+            <arg> 
+               <argname>outputFile</argname> 
+               <argvalue>logExtract.txt</argvalue> 
+            </arg> 
+<arg> 
+              <argname>searchList</argname>
+              <argvalue>\.\.\.only second half of the job,CBNT_Audit                       INFO End of initialization : Total Virtual memory,CBNT_Audit                       INFO After finalise:  virtual memory VSIZE,CBNT_Audit                       INFO Total Virtual memory,ChronoStatSvc                    INFO Time User   : Tot</argvalue>
+</arg> 
+         </action>
+         <action> 
+            <modulename>RttLibraryTools</modulename> 
+            <testname>FileGrepper</testname> 
+            <arg> 
+                 <argname>inputFile</argname> 
+               <argvalue>*_log</argvalue> 
+            </arg> 
+            <arg> 
+               <argname>outputFile</argname> 
+               <argvalue>memoryLeak.txt</argvalue> 
+            </arg> 
+<arg> 
+              <argname>searchList</argname>
+              <argvalue>\.\.\.only second half of the job</argvalue>
+</arg> 
+         </action> 
+
+
+
+         </jobGroup>
+
+  <jobGroup name="AthenaCaloRecExAANTReal" parent="AthenaRecExCommon">
+               <keepFilePattern>*.root</keepFilePattern>
+               <keepFilePattern>*.hist</keepFilePattern>
+               <keepFilePattern>*.ps</keepFilePattern>
+               <keepFilePattern>*.pdf</keepFilePattern>
+               <keepFilePattern>*.txt</keepFilePattern>
+               <keepFilePattern>*.gif</keepFilePattern>
+               <keepFilePattern>*.html</keepFilePattern>
+               <keepFilePattern>*.log</keepFilePattern>
+               <keepFilePattern>rtt.css</keepFilePattern>
+               <keepFilePattern displayColor="green">checks.html</keepFilePattern>
+               <keepFilePattern>*.pmon.gz</keepFilePattern>
+
+               <auxFilePattern>CaloRecEx*.C</auxFilePattern>
+               <auxFilePattern>CaloRecEx_runMacro*.C</auxFilePattern>
+               <auxFilePattern>CaloRecEx_runPython2.C</auxFilePattern>
+               <auxFilePattern>rtt.css</auxFilePattern>
+               <auxFilePattern>CaloRecEx_HistoComparison.txt</auxFilePattern>
+               <auxFilePattern>CaloRecEx_check.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_HistoComparison.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_Truth.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_memleak.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_checkAODESDcontent.py</auxFilePattern>
+               <auxFilePattern>CaloRecEx_extractRec.py</auxFilePattern>
+               <auxFilePattern>myperfmon.py</auxFilePattern>
+               <auxFilePattern>*Checks.py</auxFilePattern>
+
+<action>
+            <modulename>RttLibraryTools</modulename>
+            <testname>ROOTMacroRunner</testname>
+            <arg>
+               <argname>macro</argname>
+               <argvalue>CaloRecEx_runMacros2.C</argvalue>
+            </arg>
+         </action>
+
+
+<action> 
+            <modulename>RttLibraryTools</modulename> 
+            <testname>FileGrepper</testname> 
+            <arg> 
+               <argname>inputFile</argname> 
+               <argvalue>*_log</argvalue> 
+            </arg> 
+            <arg> 
+               <argname>outputFile</argname> 
+               <argvalue>errMessages.txt</argvalue> 
+            </arg> 
+<arg> 
+              <argname>searchList</argname>
+              <argvalue>ERROR,FATAL,WARNING</argvalue>
+</arg> 
+         </action>
+
+
+
+<action> 
+            <modulename>RttLibraryTools</modulename> 
+            <testname>FileGrepper</testname> 
+            <arg> 
+                 <argname>inputFile</argname> 
+               <argvalue>*_log</argvalue> 
+            </arg> 
+            <arg> 
+               <argname>outputFile</argname> 
+               <argvalue>logExtract.txt</argvalue> 
+            </arg> 
+<arg> 
+              <argname>searchList</argname>
+              <argvalue>\.\.\.only second half of the job,CBNT_Audit                       INFO End of initialization : Total Virtual memory,CBNT_Audit                       INFO After finalise:  virtual memory VSIZE,CBNT_Audit                       INFO Total Virtual memory,ChronoStatSvc                    INFO Time User   : Tot</argvalue>
+</arg> 
+         </action>
+         <action> 
+            <modulename>RttLibraryTools</modulename> 
+            <testname>FileGrepper</testname> 
+            <arg> 
+                 <argname>inputFile</argname> 
+               <argvalue>*_log</argvalue> 
+            </arg> 
+            <arg> 
+               <argname>outputFile</argname> 
+               <argvalue>memoryLeak.txt</argvalue> 
+            </arg> 
+<arg> 
+              <argname>searchList</argname>
+              <argvalue>\.\.\.only second half of the job</argvalue>
+</arg> 
+         </action> 
+
+
+
+         </jobGroup>
+    
+      </jobGroups>
+   </rtt>
+
+</unifiedTestConfiguration>
+
-- 
GitLab