diff --git a/Reconstruction/egamma/egammaAlgs/CMakeLists.txt b/Reconstruction/egamma/egammaAlgs/CMakeLists.txt index 4c06636f1adbf935aa6b93a733ed83d28d4171fe..05f7cec4f20acd837cf87a37b72e2fe5191c63d1 100644 --- a/Reconstruction/egamma/egammaAlgs/CMakeLists.txt +++ b/Reconstruction/egamma/egammaAlgs/CMakeLists.txt @@ -6,7 +6,7 @@ atlas_subdir( egammaAlgs ) # Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC +atlas_depends_on_subdirs( PRIVATE Control/AthenaBaseComps Event/EventKernel Event/xAOD/xAODCaloEvent @@ -14,7 +14,6 @@ atlas_depends_on_subdirs( PUBLIC Event/xAOD/xAODTruth GaudiKernel PhysicsAnalysis/MCTruthClassifier - PRIVATE Calorimeter/CaloGeoHelpers Calorimeter/CaloUtils Calorimeter/CaloEvent @@ -40,21 +39,11 @@ atlas_depends_on_subdirs( PUBLIC # External dependencies: find_package( CLHEP ) -# tag ROOTMathLibs was not recognized in automatic conversion in cmt2cmake - -# Component(s) in the package: -atlas_add_library( egammaAlgsLib - src/*.cxx - NO_PUBLIC_HEADERS - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps EventKernel xAODCaloEvent xAODEgamma xAODTruth GaudiKernel MCTruthClassifierLib CaloUtilsLib StoreGateLib SGtests ElectronPhotonSelectorToolsLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} CaloGeoHelpers AthenaKernel CxxUtils xAODTracking egammaRecEvent egammaUtils PathResolver Particle ParticleTruth TrkToolInterfaces InDetRecToolInterfaces FourMomUtils TrkTrack TrkPseudoMeasurementOnTrack InDetConversionFinderTools ) - atlas_add_component( egammaAlgs + src/*.cxx src/components/*.cxx INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps EventKernel xAODCaloEvent xAODEgamma xAODTruth GaudiKernel MCTruthClassifierLib CaloGeoHelpers CaloUtilsLib AthenaKernel CxxUtils StoreGateLib SGtests xAODTracking ElectronPhotonSelectorToolsLib egammaRecEvent egammaUtils PathResolver egammaAlgsLib Particle ParticleTruth TrkToolInterfaces InDetRecToolInterfaces FourMomUtils TrkTrack TrkPseudoMeasurementOnTrack InDetConversionFinderTools ) + LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps EventKernel xAODCaloEvent xAODEgamma xAODTruth GaudiKernel MCTruthClassifierLib CaloGeoHelpers CaloUtilsLib AthenaKernel CxxUtils StoreGateLib SGtests xAODTracking ElectronPhotonSelectorToolsLib egammaRecEvent egammaUtils PathResolver Particle ParticleTruth TrkToolInterfaces InDetRecToolInterfaces FourMomUtils TrkTrack TrkPseudoMeasurementOnTrack InDetConversionFinderTools ) # Install files from the package: atlas_install_python_modules( python/*.py ) diff --git a/Reconstruction/egamma/egammaTools/python/EMBremCollectionBuilder.py b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilder.py similarity index 93% rename from Reconstruction/egamma/egammaTools/python/EMBremCollectionBuilder.py rename to Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilder.py index 5b2da797bd1c5dd7eb5166a0b285c97c03dca328..5a5bbb801a0747457b39e610f8385f8879032e99 100644 --- a/Reconstruction/egamma/egammaTools/python/EMBremCollectionBuilder.py +++ b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilder.py @@ -13,10 +13,10 @@ from InDetRecExample.InDetJobProperties import InDetFlags import traceback #import base class -from egammaTools import egammaToolsConf +from egammaAlgs import egammaAlgsConf from InDetTools import egammaExtrapolator -class egammaBremCollectionBuilder ( egammaToolsConf.EMBremCollectionBuilder ) : +class egammaBremCollectionBuilder ( egammaAlgsConf.EMBremCollectionBuilder ) : __slots__ = () def __init__(self, name="EMBremCollectionBuilder", **kw): @@ -170,3 +170,12 @@ class egammaBremCollectionBuilder ( egammaToolsConf.EMBremCollectionBuilder ) : self.narrowDeltaPhiBrem=0.20 #Dominated by the needs of assymetric conversions self.narrowDeltaPhiRescale=0.05 self.narrowDeltaPhiRescaleBrem=0.1 + +from egammaTrackTools.egammaTrackToolsFactories import EMExtrapolationTools +EMBremCollectionBuilder = AlgFactory( egammaBremCollectionBuilder, + name = 'EMBremCollectionBuilder', + ExtrapolationTool = EMExtrapolationTools, + OutputTrackContainerName=egammaKeys.outputTrackKey(), + ClusterContainerName=egammaKeys.inputClusterKey(), + DoTruth=rec.doTruth() + ) diff --git a/Reconstruction/egamma/egammaTools/python/EMVertexBuilder.py b/Reconstruction/egamma/egammaAlgs/python/EMVertexBuilder.py similarity index 95% rename from Reconstruction/egamma/egammaTools/python/EMVertexBuilder.py rename to Reconstruction/egamma/egammaAlgs/python/EMVertexBuilder.py index 3ea8fcbc43968173d8040371faec2e9546683c05..37b63ec1aa2447d902176c0aa0fbff9a9dd3003e 100644 --- a/Reconstruction/egamma/egammaTools/python/EMVertexBuilder.py +++ b/Reconstruction/egamma/egammaAlgs/python/EMVertexBuilder.py @@ -3,7 +3,7 @@ __doc__ = "ToolFactory to instantiate EMVertexBuilder with default configuration" __author__ = "Bruno Lenzi" -import egammaToolsConf +from egammaAlgs import egammaAlgsConf from egammaRec.Factories import FcnWrapper, ToolFactory from egammaRec import egammaKeys from RecExConfig.RecFlags import rec @@ -32,7 +32,7 @@ class VertexFinderToolInstance(FcnWrapper): return theemvertexfindertool.toolInstance() -EMVertexBuilder = ToolFactory( egammaToolsConf.EMVertexBuilder, +EMVertexBuilder = AlgFactory( egammaAlgsConf.EMVertexBuilder, InputTrackParticleContainerName = egammaKeys.outputTrackParticleKey(), OutputConversionContainerName = egammaKeys.outputConversionKey(), VertexFinderTool = VertexFinderToolInstance(), diff --git a/Reconstruction/egamma/egammaRec/python/egammaForwardGetter.py b/Reconstruction/egamma/egammaRec/python/egammaForwardGetter.py index 0248fbcd3a2b18caaa07405ba9947b8865a42e45..8a0083c7f2a66db8451c49e99fd62dd9bc890459 100755 --- a/Reconstruction/egamma/egammaRec/python/egammaForwardGetter.py +++ b/Reconstruction/egamma/egammaRec/python/egammaForwardGetter.py @@ -9,7 +9,7 @@ import traceback from RecExConfig.Configured import Configured from egammaRec import egammaKeys -from egammaRec import egammaRecConf +from egammaAlgs import egammaAlgsConf from egammaRec.Factories import AlgFactory, FcnWrapper, FullNameWrapper from egammaRec import egammaRecFlags as egRecFlags egammaRecFlags = egRecFlags.jobproperties.egammaRecFlags @@ -20,7 +20,7 @@ def forwardSelectorTools(): "Return a list with the selectors for forward electrons" return [ LooseForwardElectronSelector(), MediumForwardElectronSelector(), TightForwardElectronSelector() ] -egammaForwardBuilder = AlgFactory( egammaRecConf.egammaForwardBuilder, +egammaForwardBuilder = AlgFactory( egammaAlgsConf.egammaForwardBuilder, name = 'egammaForward', # Keys diff --git a/Reconstruction/egamma/egammaRec/python/egammaGetter.py b/Reconstruction/egamma/egammaRec/python/egammaGetter.py index bbb25ca5df66eb4ce32b4eaf852921aba3764401..52465559d4ac5f106944f4e67f0c95ea5bc4d696 100755 --- a/Reconstruction/egamma/egammaRec/python/egammaGetter.py +++ b/Reconstruction/egamma/egammaRec/python/egammaGetter.py @@ -9,7 +9,7 @@ from AthenaCommon.DetFlags import DetFlags from RecExConfig.Configured import Configured # from egammaRec import egammaKeys -from egammaRec import egammaRecConf +from egammaAlgs import egammaAlgsConf from egammaRec.Factories import AlgFactory, FcnWrapper from egammaRec import egammaRecFlags as egRecFlags egammaRecFlags = egRecFlags.jobproperties.egammaRecFlags @@ -18,17 +18,14 @@ egammaRecFlags = egRecFlags.jobproperties.egammaRecFlags def doSuperclusters(): return egammaRecFlags.doSuperclusters() -def doBremFinding(): - return DetFlags.detdescr.ID_on() and egammaRecFlags.doBremFinding() - def doConversions() : return DetFlags.detdescr.ID_on() and egammaRecFlags.doConversions() ################ # Import the tool factories from egammaTools.egammaToolsFactories import \ - EMBremCollectionBuilder, EMTrackMatchBuilder,\ - EMVertexBuilder, EMConversionBuilder, EGammaAmbiguityTool,\ + EMTrackMatchBuilder,\ + EMConversionBuilder, EGammaAmbiguityTool,\ EMClusterTool, EMFourMomBuilder, EMShowerBuilder, egammaOQFlagsBuilder, \ ElectronPIDBuilder, PhotonPIDBuilder @@ -72,7 +69,7 @@ class egammaGetter ( Configured ) : mlog.info('entering') if doSuperclusters() : - egammaBuilder = AlgFactory(egammaRecConf.topoEgammaBuilder, name = 'egamma', + egammaBuilder = AlgFactory(egammaAlgsConf.topoEgammaBuilder, name = 'egamma', # Keys ElectronOutputName = egammaKeys.outputElectronKey(), PhotonOutputName = egammaKeys.outputPhotonKey(), @@ -82,9 +79,7 @@ class egammaGetter ( Configured ) : photonSuperClusterBuilder = photonSuperClusterBuilder, InputTopoClusterContainerName = egammaRecFlags.egammaTopoClusterCollection(), # Builder tools - BremCollectionBuilderTool = EMBremCollectionBuilder, TrackMatchBuilderTool = EMTrackMatchBuilder, - VertexBuilder = EMVertexBuilder if doConversions() else None, ConversionBuilderTool = EMConversionBuilder if doConversions() else None, AmbiguityTool = EGammaAmbiguityTool, # Decoration tools @@ -94,20 +89,17 @@ class egammaGetter ( Configured ) : # Flags and other properties # Track matching depending if ID is on/off doTrackMatching = DetFlags.detdescr.ID_on(), - # conversions building/matching depending if ID is on/off - doVertexCollection=doConversions(), + # conversions matching depending if ID is on/off doConversions = doConversions() ) else : - egammaBuilder = AlgFactory(egammaRecConf.egammaBuilder, name = 'egamma', + egammaBuilder = AlgFactory(egammaAlgsConf.egammaBuilder, name = 'egamma', # Keys ElectronOutputName = egammaKeys.outputElectronKey(), PhotonOutputName = egammaKeys.outputPhotonKey(), TopoSeededClusterContainerName = getTopoSeededCollectionName(), # Builder tools - BremCollectionBuilderTool = EMBremCollectionBuilder, TrackMatchBuilderTool = EMTrackMatchBuilder, - VertexBuilder = EMVertexBuilder if doConversions() else None, ConversionBuilderTool = EMConversionBuilder if doConversions() else None, AmbiguityTool = EGammaAmbiguityTool, # Decoration tools @@ -117,8 +109,7 @@ class egammaGetter ( Configured ) : # Flags and other properties # Track matching depending if ID is on/off doTrackMatching = DetFlags.detdescr.ID_on(), - # conversions building/matching depending if ID is on/off - doVertexCollection=doConversions(), + # conversions matching depending if ID is on/off doConversions = doConversions(), # clusterEnergyCut = 10*MeV, diff --git a/Reconstruction/egamma/egammaRec/python/egammaRecFlags.py b/Reconstruction/egamma/egammaRec/python/egammaRecFlags.py index a432dc4d9b53d5811d37cb91465a5ce43c96d8ff..805e37baea624f56df5368a817392207d3394528 100755 --- a/Reconstruction/egamma/egammaRec/python/egammaRecFlags.py +++ b/Reconstruction/egamma/egammaRec/python/egammaRecFlags.py @@ -13,6 +13,8 @@ __doc__="egamma flags . " from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer from AthenaCommon.JobProperties import jobproperties +print "In egammaRecFlags" + class Enabled(JobProperty): """ jobproperty to disable/enable the egamma algorithms as a group (container) in one go. Can enable/disable the full egamma @@ -50,6 +52,20 @@ class doTopoCaloSeeded (JobProperty): allowedTypes=['bool'] StoredValue=True +class doBremFinding (egammaRecFlagsJobProperty): + """ switch for whether to do the brem binding + """ + statusOn=True + allowedTypes=['bool'] + StoredValue=True + +class doVertexBuilding (egammaRecFlagsJobProperty): + """ switch for whether to do the conversion vertex building + """ + statusOn=True + allowedTypes=['bool'] + StoredValue=True + #Other options class doEgammaTruthAssociation (JobProperty): """ switch for truth association alg @@ -59,7 +75,7 @@ class doEgammaTruthAssociation (JobProperty): StoredValue=True class doConversions (JobProperty): - """ switch for Conversions + """ switch for doing conversion matching """ statusOn=True allowedTypes=['bool'] @@ -126,9 +142,10 @@ class egammaRecFlags(JobPropertyContainer): jobproperties.add_Container(egammaRecFlags) # I want always the following flags in the container -_list_Egamma=[Enabled,doEgammaCaloSeeded,doEgammaForwardSeeded,doConversions,doTopoCaloSeeded,cellContainerName,doSwitchTRTGas, - doEgammaTruthAssociation,clusterCorrectionVersion,calibMVAVersion, doSuperclusters, inputTopoClusterCollection, - egammaTopoClusterCollection] +_list_Egamma=[Enabled, doEgammaCaloSeeded, doEgammaForwardSeeded, doBremFinding, doVertexBuilding, + doConversions, doTopoCaloSeeded, cellContainerName, doSwitchTRTGas, + doEgammaTruthAssociation, clusterCorrectionVersion, calibMVAVersion, doSuperclusters, + inputTopoClusterCollection, egammaTopoClusterCollection] for j in _list_Egamma: jobproperties.egammaRecFlags.add_JobProperty(j) diff --git a/Reconstruction/egamma/egammaRec/share/egammaRec_jobOptions.py b/Reconstruction/egamma/egammaRec/share/egammaRec_jobOptions.py index 1ada07b8a1c449cb47445c8d58688e83e2275706..d5a865ab0198c3b21d7ab9ba581e270a0e602b39 100755 --- a/Reconstruction/egamma/egammaRec/share/egammaRec_jobOptions.py +++ b/Reconstruction/egamma/egammaRec/share/egammaRec_jobOptions.py @@ -14,6 +14,25 @@ topSequence = AlgSequence() ###############Print Egamma JobProperties############# jobproperties.egammaRecFlags.print_JobProperties("full") ##################################################################### + +# Run Brem builder. +if jobproperties.egammaRecFlags.doBremFinding() and DetFlags.detdescr.ID_on(): + try: + import egammaAlgs.EMBremCollectionBuilder + except Exception: + treatException("Could not set up EMBremFinder. Switch it off !") + jobproperties.egammaRecFlags.doBremFinding=False + egammaAlgs.EMBremCollectionBuilder(disable=True) + +# Run conversion vertex builder. +if jobproperties.egammaRecFlags.doVertexBuilding() and DetFlags.detdescr.ID_on(): + try: + import egammaAlgs.EMVertexBuilder + except Exception: + treatException("Could not set up the conversion vertex building. Switch it off !") + jobproperties.egammaRecFlags.doEMVertexBuilder=False + egammaAlgs.EMVertexBuilder(disable=True) + # Run calo-based (egamma) algorithm, includes topo-seeded # It requires either to read ESD # either that Emcluster have been build diff --git a/Reconstruction/egamma/egammaTools/python/egammaToolsFactories.py b/Reconstruction/egamma/egammaTools/python/egammaToolsFactories.py index d1d2e311c5e1e4f3ccafe4b4ada596e1eda2cb4d..bc06dc9f953e4fc506febeca12135d37b853a647 100644 --- a/Reconstruction/egamma/egammaTools/python/egammaToolsFactories.py +++ b/Reconstruction/egamma/egammaTools/python/egammaToolsFactories.py @@ -71,15 +71,7 @@ egammaCheckEnergyDepositTool = ToolFactory(egammaToolsConf.egammaCheckEnergyDepo ThrF3max=0.8) -from EMBremCollectionBuilder import egammaBremCollectionBuilder from egammaTrackTools.egammaTrackToolsFactories import EMExtrapolationTools -EMBremCollectionBuilder = ToolFactory( egammaBremCollectionBuilder, - name = 'EMBremCollectionBuilder', - ExtrapolationTool = EMExtrapolationTools, - OutputTrackContainerName=egammaKeys.outputTrackKey(), - ClusterContainerName=egammaKeys.inputClusterKey(), - DoTruth=rec.doTruth() - ) EMConversionBuilder = ToolFactory( egammaToolsConf.EMConversionBuilder, @@ -148,4 +140,3 @@ TightForwardElectronSelector = ToolFactory( ConfiguredAsgForwardElectronIsEMSele from EMShowerBuilder import EMShowerBuilder from egammaOQFlagsBuilder import egammaOQFlagsBuilder from EMTrackMatchBuilder import EMTrackMatchBuilder -from EMVertexBuilder import EMVertexBuilder