Skip to content
Snippets Groups Projects
Commit 0af91d9b authored by Mark Hodgkinson's avatar Mark Hodgkinson
Browse files

Add two job options files in share which allow us to run calorimeter and...

Add two job options files in share which allow us to run calorimeter and particle flow reconstruciton on ESD files. This is heavily based
on CaloHiveExOpts.py
Update eflowRec_entries.cxx to be aware of new PFClusterSelector algorithm.
parent 669e7918
No related merge requests found
#
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
#
#
## Based on CaloHiveDeps.py: Algorithm Data Dependencies for CaloBottoUp.py
## With small adjustments to make it work on ESD files
xAODMaker__EventInfoCnvAlg.ExtraInputs = [('EventInfo','McEventInfo')]
xAODMaker__EventInfoCnvAlg.ExtraOutputs = [('xAOD::EventAuxInfo','EventInfoAux.'),
('xAOD::EventInfo','EventInfo') ]
topSequence.CaloTopoCluster.ExtraInputs = [('CaloCalibrationHitContainer','LArCalibrationHitActive'),
('CaloCalibrationHitContainer','LArCalibrationHitDeadMaterial'),
('CaloCalibrationHitContainer','LArCalibrationHitInactive'),
('CaloCellContainer','AllCalo')]
topSequence.CaloTopoCluster.ExtraOutputs = [('xAOD::CaloClusterContainer','CaloCalTopoClusters'),
('xAOD::CaloClusterAuxContainer','CaloCalTopoClustersAux.'),
('xAOD::CaloClusterContainer','CaloTopoCluster'),
('xAOD::CaloClusterAuxContainer','CaloTopoClusterAux.'),
('CaloClusterCellLinkContainer','CaloTopoCluster_links'),
('CaloClusterCellLinkContainer','CaloCalTopoClusters_links')]
StreamESD.ExtraInputs = [('CaloCellContainer','AllCalo'),
('xAOD::CaloClusterContainer','CaloTopoCluster')]
#
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
#
# Runs calorimeter clustering reconstruction - this part is taken from CaloHiveExOpts.py
# Additional configuration runs particle flow MT algorithms and sets up items needed for track to calorimeter extrapolation
from AthenaCommon.AlgSequence import AlgSequence
topSequence = AlgSequence()
import MagFieldServices.SetupField
from AthenaCommon.GlobalFlags import globalflags
globalflags.DetGeo = 'atlas'
from AthenaCommon.DetFlags import DetFlags
DetFlags.detdescr.all_setOff()
DetFlags.detdescr.Muon_setOn()
if hasattr(DetFlags,'BField_on'): DetFlags.BField_setOn()
from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc
AtlasTrackingGeometrySvc = svcMgr.AtlasTrackingGeometrySvc
include('RecExCond/AllDet_detDescr.py')
#---------------------------------------------------------------------------------#
# MT-specific code
# Get number of processes and threads
from AthenaCommon.ConcurrencyFlags import jobproperties as jp
nThreads = jp.ConcurrencyFlags.NumThreads()
nProc = jp.ConcurrencyFlags.NumProcs()
if nThreads >=1 :
from AthenaCommon.AlgScheduler import AlgScheduler
AlgScheduler.OutputLevel( INFO )
AlgScheduler.ShowControlFlow( True )
AlgScheduler.ShowDataDependencies( True )
AlgScheduler.setDataLoaderAlg( 'SGInputLoader' )
# Support for the MT-MP hybrid mode
if (nProc > 0) :
from AthenaCommon.Logging import log as msg
if (theApp.EvtMax == -1) :
msg.fatal('EvtMax must be >0 for hybrid configuration')
sys.exit(AthenaCommon.ExitCodes.CONFIGURATION_ERROR)
if ( theApp.EvtMax % nProc != 0 ) :
msg.warning('EvtMax[%s] is not divisible by nProcs[%s]: MP Workers will not process all requested events',theApp.EvtMax,nProc)
chunkSize = int (theApp.EvtMax / nProc)
from AthenaMP.AthenaMPFlags import jobproperties as jps
jps.AthenaMPFlags.ChunkSize= chunkSize
msg.info('AthenaMP workers will process %s events each',chunkSize)
## force loading of data. make sure this alg is at the front of the
## AlgSequence
#
from SGComps.SGCompsConf import SGInputLoader
topSequence+=SGInputLoader(OutputLevel=DEBUG, ShowEventDump=False)
# MT-specific code
#---------------------------------------------------------------------------------#
theApp.EvtMax = 5
from xAODEventInfoCnv.xAODEventInfoCreator import xAODMaker__EventInfoCnvAlg
topSequence+=xAODMaker__EventInfoCnvAlg()
#---------------------------------------------------------------------------------#
# NEW Conditions access infrastructure
#
from IOVSvc.IOVSvcConf import CondInputLoader
topSequence += CondInputLoader( "CondInputLoader", OutputLevel=DEBUG, )
import StoreGate.StoreGateConf as StoreGateConf
svcMgr += StoreGateConf.StoreGateSvc("ConditionStore")
from IOVSvc.IOVSvcConf import CondSvc
svcMgr += CondSvc()
# NEW Conditions access infrastructure
#---------------------------------------------------------------------------------#
# Make sure PerfMon is off
include( "PerfMonGPerfTools/DisablePerfMon_jobOFragment.py" )
# Input file
dataFile="/eos/atlas/atlascerngroupdisk/phys-rig/MC15Samples/ESD/mc15_13TeV.361022.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ2W.recon.ESD.e3668_s2832_r7968/ESD.08355655._001904.pool.root.1"
from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
athenaCommonFlags.FilesInput=[dataFile,dataFile]
# AutoConfiguration
from RecExConfig.RecFlags import rec
rec.AutoConfiguration = ['everything']
import RecExConfig.AutoConfiguration as auto
auto.ConfigureFromListOfKeys(rec.AutoConfiguration())
from RecExConfig.ObjKeyStore import objKeyStore, CfgKeyStore
from RecExConfig.InputFilePeeker import inputFileSummary
objKeyStore.addManyTypesInputFile(inputFileSummary['eventdata_itemsList'])
#---------------------------------------------------------------------------------#
# Detector Description
from AtlasGeoModel import SetGeometryVersion
from AtlasGeoModel import GeoModelInit
from LArGeoAlgsNV.LArGeoAlgsNVConf import LArDetectorToolNV
from TileGeoModel.TileGeoModelConf import TileDetectorTool
ServiceMgr.GeoModelSvc.DetectorTools += [ LArDetectorToolNV(ApplyAlignments = True, GeometryConfig = "RECO"),
TileDetectorTool(GeometryConfig = "RECO")
]
from CaloDetMgrDetDescrCnv import CaloDetMgrDDCnv
include( "TileConditions/TileConditions_jobOptions.py" )
include( "CaloConditions/LArTTCellMap_ATLAS_jobOptions.py")
include( "CaloConditions/CaloTTIdMap_ATLAS_jobOptions.py")
include( "LArConditionsCommon/LArConditionsCommon_MC_jobOptions.py" )
include( "LArConditionsCommon/LArIdMap_MC_jobOptions.py" )
from LArConditionsCommon import LArAlignable
ServiceMgr.DetDescrCnvSvc.DecodeIdDict = True
# Detector Description
#---------------------------------------------------------------------------------#
import AthenaPoolCnvSvc.ReadAthenaPool #Maybe better to break up to get rid of MetaData stuff
svcMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput()
from GaudiAlg.GaudiAlgConf import EventCounter
topSequence+=EventCounter(Frequency=2)
from LArROD.LArRODFlags import larRODFlags
larRODFlags.readDigits=False
from CaloRec.CaloRecFlags import jobproperties
jobproperties.CaloRecFlags.clusterCellGetterName = 'CaloRec.CaloCellGetter.CaloCellGetter'
from CaloRec.CaloCellFlags import jobproperties
jobproperties.CaloCellFlags.doLArDeadOTXCorr=False
include( "CaloRec/CaloTopoCluster_jobOptions.py" )
#PFlow
from eflowRec.eflowRecConf import PFLeptonSelector
PFLeptonSelector=PFLeptonSelector("PFLeptonSelector")
topSequence += PFLeptonSelector
from eflowRec.eflowRecConf import PFTrackSelector
PFTrackSelector=PFTrackSelector("PFTrackSelector")
from eflowRec.eflowRecConf import eflowTrackCaloDummyExtensionTool
TrackCaloExtensionTool=eflowTrackCaloDummyExtensionTool()
PFTrackSelector.trackExtrapolatorTool = TrackCaloExtensionTool
from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool
TrackSelectionTool = InDet__InDetTrackSelectionTool()
from AthenaCommon.AppMgr import ToolSvc
ToolSvc += TrackSelectionTool
TrackSelectionTool.CutLevel = "TightPrimary"
TrackSelectionTool.minPt = 500.0
PFTrackSelector.trackSelectionTool = TrackSelectionTool
topSequence += PFTrackSelector
from eflowRec.eflowRecConf import PFClusterSelector
PFClusterSelector=PFClusterSelector("PFClusterSelector")
topSequence += PFClusterSelector
import AthenaPoolCnvSvc.WriteAthenaPool
logRecoOutputItemList_jobOptions = logging.getLogger( 'py:RecoOutputItemList_jobOptions' )
from OutputStreamAthenaPool.OutputStreamAthenaPool import createOutputStream
StreamESD=createOutputStream("StreamESD","myESD.pool.root",True)
include ("CaloRecEx/CaloRecOutputItemList_jobOptions.py")
StreamESD.ItemList+=CaloESDList
print StreamESD.ItemList
#---------------------------------------------------------------------------------#
# MT-specific code
if nThreads >=1 :
include ( "CaloHiveDeps.py" )
print "==========================================================================================\n"
#
## set which Algorithms can be cloned
#
# names of algs are:
# SGInputLoader
# xAODMaker::EventInfoCnvAlg
# EventCounter
# CaloCellMaker
# CmbTowerBldr
# CaloClusterMakerSWCmb
# CaloTopoCluster
# StreamESD
# set algCardinality = 1 to disable cloning for all Algs
algCardinality = nThreads
if (algCardinality > 1):
for alg in topSequence:
name = alg.name()
if name in ["CaloCellMaker","StreamESD"] :
# suppress INFO message about Alg unclonability
alg.Cardinality = 1
else:
alg.Cardinality = algCardinality
#Change input and output container names
topSequence.CaloTopoCluster.ClustersOutputName="CaloCalTopoClusterV2"
topSequence.PFClusterSelector.calClustersName="CaloCalTopoClusterV2"
......@@ -17,6 +17,7 @@
#include "eflowRec/eflowVertexInformationSetter.h"
#include "eflowRec/PFLeptonSelector.h"
#include "eflowRec/PFTrackSelector.h"
#include "eflowRec/PFClusterSelector.h"
#include "GaudiKernel/DeclareFactoryEntries.h"
DECLARE_ALGORITHM_FACTORY( eflowBuilder )
......@@ -26,6 +27,7 @@ DECLARE_ALGORITHM_FACTORY( eflowObjectBuilder )
DECLARE_ALGORITHM_FACTORY( eflowOverlapRemoval )
DECLARE_ALGORITHM_FACTORY( eflowVertexInformationSetter )
DECLARE_ALGORITHM_FACTORY( PFLeptonSelector )
DECLARE_ALGORITHM_FACTORY( PFClusterSelector )
DECLARE_ALGORITHM_FACTORY( PFTrackSelector )
DECLARE_TOOL_FACTORY( eflowRecoverSplitShowersTool )
DECLARE_TOOL_FACTORY( eflowCellLevelSubtractionTool )
......@@ -47,6 +49,7 @@ DECLARE_FACTORY_ENTRIES(eflowRec) {
DECLARE_ALGORITHM (eflowOverlapRemoval )
DECLARE_ALGORITHM ( eflowVertexInformationSetter )
DECLARE_ALGORITHM( PFLeptonSelector )
DECLARE_ALGORITHM( PFClusterSelector )
DECLARE_ALGORITHM( PFTrackSelector )
DECLARE_TOOL ( eflowRecoverSplitShowersTool )
DECLARE_TOOL ( eflowCellLevelSubtractionTool )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment