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('Σ(|ΔA|)/ΣA is '+str(dA)+' (cut is '+str(max)+')\n') + f.write("<BR>") + f.write('Σ(|ΔA|)/Σ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('Σ(|ΔA|)/ΣA is '+str(dA)+' (cut is '+str(max)+')\n') + f.write("<BR>") + f.write('Σ(|ΔA|)/Σ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