Skip to content
Snippets Groups Projects
Commit 3b44fe45 authored by Johannes Junggeburth's avatar Johannes Junggeburth :dog2:
Browse files

Merge branch 'master' of ssh://gitlab.cern.ch:7999/jojungge/athena into large_d0_muons

parents 1848e8b1 9386e960
6 merge requests!58791DataQualityConfigurations: Modify L1Calo config for web display,!46784MuonCondInterface: Enable thread-safety checking.,!46776Updated LArMonitoring config file for WD to match new files produced using MT,!45405updated ART test cron job,!42417Draft: DIRE and VINCIA Base Fragments for Pythia 8.3,!36175Add muons built from large d0 tracking.
Showing
with 127 additions and 71 deletions
......@@ -82,6 +82,7 @@ class FlagAddress(object):
if self._flags.hasFlag( merged ):
return self._flags._get( merged )
raise RuntimeError( "No such flag: {} The name is likely incomplete.".format(merged) )
def __setattr__( self, name, value ):
......@@ -203,6 +204,9 @@ class AthConfigFlags(object):
for f in self._flagdict.keys():
if f.startswith(path):
return True
for c in self._dynaflags.keys():
if c.startswith(path):
return True
return False
def hasFlag(self, name):
......@@ -291,12 +295,12 @@ class AthConfigFlags(object):
#End loop over flags
pass
#Last sanity check: Make sure that teh replaced section still contains teh same names:
if (replacedNames!=replacementNames):
#Last sanity check: Make sure that the replaced section still contains the same names:
if not replacementNames.issuperset(replacedNames):
_msg.error(replacedNames)
_msg.error(replacementNames)
raise RuntimeError("Attempt to replace incompatible subsets: None matching flag names are "
+ repr(replacedNames ^ replacementNames ))
raise RuntimeError("Attempt to replace incompatible flags subsets: distinct flag are "
+ repr(replacementNames - replacedNames))
newFlags = AthConfigFlags(newFlagDict)
newFlags._dynaflags = deepcopy(self._dynaflags)
return newFlags
......@@ -318,24 +322,28 @@ class AthConfigFlags(object):
self._flagdict[fullName]=flag
for (name,loader) in other._dynaflags.items():
if prefix+"."+name in self._dynaflags:
raise KeyError("Duplicated dynamic flags name: {}".format( name ) )
self._dynaflags.update(other._dynaflags)
#self.join( loader(), name )
fullName = prefix+"."+name if prefix != "" else name
if fullName in self._dynaflags:
raise KeyError("Duplicated dynamic flags name: {}".format( fullName ) )
_msg.debug("Joining dynamic flags with %s", fullName)
self._dynaflags[fullName] = loader
return
def dump(self):
def dump(self, pattern=".*"):
import re
compiled = re.compile(pattern)
print("{:40} : {}".format( "Flag Name","Value" ) )
for name in sorted(self._flagdict):
print("{:40} : {}".format( name, repr(self._flagdict[name] ) ) )
if compiled.match(name):
print("{:40} : {}".format( name, repr(self._flagdict[name] ) ) )
if len(self._dynaflags) == 0:
return
print("Flag categories that can be loaded dynamically")
print("{:25} : {:>30} : {}".format( "Category","Generator name", "Defined in" ) )
for name,gen_and_prefix in sorted(self._dynaflags.items()):
print("{:25} : {:>30} : {}".format( name, gen_and_prefix[0].__name__, '/'.join(gen_and_prefix[0].__code__.co_filename.split('/')[-2:]) ) )
if compiled.match(name):
print("{:25} : {:>30} : {}".format( name, gen_and_prefix[0].__name__, '/'.join(gen_and_prefix[0].__code__.co_filename.split('/')[-2:]) ) )
def initAll(self):
......
......@@ -6,7 +6,7 @@ atlas_subdir( RootUtils )
# External dependencies:
find_package( Boost COMPONENTS filesystem thread system )
find_package( Python COMPONENTS Development )
find_package( ROOT COMPONENTS RIO Hist Tree PyROOT Core MathCore ROOTTPython)
find_package( ROOT COMPONENTS RIO Hist Tree PyROOT Core MathCore ROOTTPython )
string( REPLACE PyROOT Core ROOT_LIBRARIES_NOPYROOT "${ROOT_LIBRARIES}" )
# Component(s) in the package:
......
......@@ -50,6 +50,9 @@ atlas_add_dictionary( PhotonVertexSelectionDict
# Test(s) in the package:
if( XAOD_STANDALONE )
atlas_add_test( PhotonVertexSelection_test
SCRIPT test/testPhotonVertexSelection.py )
# FIX ME: temporarily disabled as part of the migration of
# AnalysisBase to master
# atlas_add_test( PhotonVertexSelection_test
# SCRIPT test/testPhotonVertexSelection.py )
endif()
......@@ -27,8 +27,8 @@ namespace {
// Helper macro for declaring the setProperty functions to the dictionary:
#define SETPROPERTY_INSTAN( TYPE ) \
template StatusCode asg::AsgTool::setProperty< TYPE >( const std::string&, \
const TYPE& )
template StatusCode asg::AsgComponent::setProperty< TYPE >( const std::string&, \
const TYPE& )
// Declare all possible setProperty template instantiations to Reflex:
SETPROPERTY_INSTAN( ToolHandle<CP::IPhotonPointingTool > );
......
......@@ -8,10 +8,6 @@
<class name="CP::IElectronRemovalTool" />
<class name="CP::ElectronRemovalTool" />
<class name="asg::AnaToolHandle<CP::IPhotonVertexSelectionTool>" />
<class name="asg::AnaToolHandle<CP::IPhotonPointingTool>" />
<class name="asg::AnaToolHandle<CP::IElectronRemovalTool>" />
<function pattern="xAOD::PVHelpers::*" />
......
......@@ -10,7 +10,7 @@ defaultFile = "$ASG_TEST_FILE_MC"
defaultNevents = 10
def printMethod(x):
print x
print (x)
def getViewContainer(container):
"""getViewContainer(container) --> return a view container with at most 2 egamma
......@@ -122,13 +122,23 @@ else:
(options, _ ) = parser.parse_args()
if len( _ ):
raise ValueError('Only named options are allowed, got %s' % _ )
print 'Analysing %s from %s' % (options.container, options.inputfile)
print ('Analysing %s from %s' % (options.container, options.inputfile))
import ROOT
ROOT.gROOT.Macro( '$ROOTCOREDIR/scripts/load_packages.C' )
# Initialize the xAOD infrastructure:
ROOT.xAOD.Init().ignore()
ROOT.xAOD.TruthParticleContainer()
ROOT.xAOD.MuonRoIContainer()
ROOT.xAOD.CaloClusterContainer()
ROOT.xAOD.TrackParticleContainer()
ROOT.xAOD.ElectronContainer()
ROOT.xAOD.MuonContainer()
ROOT.xAOD.JetContainer()
ROOT.xAOD.TauJetContainer()
ROOT.xAOD.PFOContainer()
ROOT.xAOD.TrigElectronContainer()
ROOT.xAOD.L2CombinedMuonContainer()
# Setup the tools
vertexTool = ROOT.CP.PhotonVertexSelectionTool("PhotonVertexSelectionTool")
......@@ -145,9 +155,9 @@ else:
pass
for entry in xrange(options.nEvents):
print '*** Analysing entry %s ***' % entry
print ('*** Analysing entry %s ***' % entry)
_ = t.GetEntry(entry)
container = getattr(t, options.container)
viewContainer = getViewContainer( container )
printOutput(viewContainer, vertexTool)
print ''
print ('')
......@@ -10,7 +10,6 @@
- PhysicsAnalysis/Algorithms/JetAnalysisAlgorithms
- PhysicsAnalysis/Algorithms/MetAnalysisAlgorithms
- PhysicsAnalysis/ElectronPhotonID/PhotonVertexSelection
......
......@@ -9,6 +9,7 @@
#include "PathResolver/PathResolver.h"
// standard library include(s)
#include <array>
#include <functional>
#include <algorithm>
#include <fstream>
......
......@@ -7,6 +7,7 @@
#include "AsgDataHandles/ReadDecorHandle.h"
#include <algorithm>
#include <array>
#include "TFile.h"
#include "TH2.h"
......
......@@ -9,3 +9,4 @@ atlas_subdir( TrigInDetConfig )
atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
atlas_add_test( TrigInDetCfg SCRIPT python -m TrigInDetConfig.TrigInDetConfig POST_EXEC_SCRIPT nopost.sh )
atlas_add_test( TrigTrackingCutFlags SCRIPT python -m TrigInDetConfig.TrigTrackingCutFlags POST_EXEC_SCRIPT nopost.sh )
......@@ -24,7 +24,7 @@ def SiDetElementsRoadMaker_xkCfg( flags, **kwargs ):
PropagatorTool = acc.getPublicTool( "InDetTrigPatternPropagator" ),
usePixel = flags.Detector.RecoPixel, # DetFlags.haveRIO.pixel_on(),
useSCT = flags.Detector.RecoSCT, #DetFlags.haveRIO.SCT_on(),
RoadWidth = 10, #InDetTrigCutValues.RoadWidth()
RoadWidth = flags.InDet.Tracking.roadWidth,
)
acc.addPublicTool( tool )
return acc
......@@ -114,7 +114,6 @@ def SiTrackMaker_xkCfg(flags, **kwargs):
"""
based on: InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecNewTracking.py , should be moved elsewhere
"""
import AthenaCommon.SystemOfUnits as Unit
name = kwargs.pop("name", "SiTrackMaker_xk")
acc = ComponentAccumulator()
acc.merge( SiDetElementsRoadMaker_xkCfg( flags, **kwargs ) )
......@@ -131,16 +130,16 @@ def SiTrackMaker_xkCfg(flags, **kwargs):
tool = CompFactory.InDet.SiTrackMaker_xk( name,
RoadTool = acc.getPublicTool( "InDetTrigSiDetElementsRoadMaker" ),
CombinatorialTrackFinder = combTrackFinderTool,
pTmin = 1000*Unit.MeV, # TODO use flag for these props
nClustersMin = 7,
nHolesMax = 3,
nHolesGapMax = 3,
SeedsFilterLevel = 0,
Xi2max = 15,
Xi2maxNoAdd = 35,
nWeightedClustersMin = 6,
pTmin = flags.InDet.Tracking.minPT,
nClustersMin = flags.InDet.Tracking.minClusters,
nHolesMax = flags.InDet.Tracking.nHolesMax,
nHolesGapMax = flags.InDet.Tracking.nHolesGapMax,
SeedsFilterLevel = flags.InDet.Tracking.seedFilterLevel,
Xi2max = flags.InDet.Tracking.Xi2max,
Xi2maxNoAdd = flags.InDet.Tracking.Xi2maxNoAdd,
nWeightedClustersMin = flags.InDet.Tracking.nWeightedClustersMin,
#CosmicTrack = InDetFlags.doCosmics(),
Xi2maxMultiTracks = 15,
Xi2maxMultiTracks = flags.InDet.Tracking.Xi2max, # follwoing: Trigger/TrigTools/TrigInDetConfig/python/EFIDTracking.py
UseAssociationTool = False )
acc.addPublicTool( tool )
return acc
......@@ -208,7 +207,7 @@ def InDetTrackSummaryHelperToolCfg(flags, **kwargs):
TRTStrawSummarySvc = trtStrawSummaryTool,
usePixel = flags.Detector.RecoPixel, #DetFlags.haveRIO.pixel_on(),
useSCT = flags.Detector.RecoSCT, #DetFlags.haveRIO.SCT_on(),
useTRT = True, # flags.Detector.TRTOn, #DetFlags.haveRIO.TRT_on()
useTRT = flags.Detector.RecoTRT, # flags.Detector.TRTOn, #DetFlags.haveRIO.TRT_on()
)
acc.addPublicTool( tool )
......@@ -433,6 +432,7 @@ def TrigInDetCondCfg( flags ):
return acc
def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
#If signature specified add suffix to the name of each algorithms
signature = "_" + signatureName if signatureName else ''
......@@ -622,7 +622,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
acc.addCondAlgo( CompFactory.InDet.SiElementPropertiesTableCondAlg(name = "InDetSiElementPropertiesTableCondAlg") )
InDet__SiTrackerSpacePointFinder=CompFactory.InDet.SiTrackerSpacePointFinder
InDetSiTrackerSpacePointFinder = InDet__SiTrackerSpacePointFinder(name = "TrigSPFinder"+ signature,
InDetSiTrackerSpacePointFinder = InDet__SiTrackerSpacePointFinder(name = "InDetSiTrackerSpacePointFinder_"+ signature,
SiSpacePointMakerTool = InDetSiSpacePointMakerTool,
PixelsClustersName = "PixelTrigClusters",
SCT_ClustersName = "SCT_TrigClusters",
......@@ -672,7 +672,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
ReadKey = "PixelDetectorElementCollection",
WriteKey = "PixelDetElementBoundaryLinks_xk") )
ftf = CompFactory.TrigFastTrackFinder( name = "FTF" + signature,
ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_" + signature,
LayerNumberTool = acc.getPublicTool( "TrigL2LayerNumberTool_FTF" ),
SpacePointProviderTool = acc.getPublicTool( "TrigSPConversionTool" + signature.lower() ),
TrackSummaryTool = acc.getPublicTool( "TrigSummaryTool_FTF" ),
......@@ -682,51 +682,47 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
RoIs = roisKey,
trigZFinder = CompFactory.TrigZFinder(),
doZFinder = False, # this and all below, copied over from comparison with running JOs, TODO find a proper surce of this settings
SeedRadBinWidth = 2,
TrackInitialD0Max = 20.0,
SeedRadBinWidth = flags.InDet.Tracking.seedRadBinWidth,
TrackInitialD0Max = 1000. if flags.InDet.Tracking.extension == 'cosmics' else 20.0,
TracksName = "TrigFastTrackFinder_Tracks"+signature,
OutputCollectionSuffix = signature,
TripletDoPSS = False,
Triplet_D0Max = 4.0,
Triplet_D0_PPS_Max = 1.7,
Triplet_D0Max = flags.InDet.Tracking.d0SeedMax,
Triplet_D0_PPS_Max = flags.InDet.Tracking.d0SeedPPSMax,
Triplet_MaxBufferLength = 3,
Triplet_MinPtFrac = 1,
Triplet_nMaxPhiSlice = 53,
doCloneRemoval = True,
doResMon = False,
doSeedRedundancyCheck = True,
pTmin = 1000.0,
doCloneRemoval = flags.InDet.Tracking.doCloneRemoval,
doResMon = flags.InDet.Tracking.doResMon,
doSeedRedundancyCheck = flags.InDet.Tracking.checkRedundantSeeds,
pTmin = flags.InDet.Tracking.minPT,
useNewLayerNumberScheme = True,
MinHits = 5
)
#ftf.RoIs = roisKey
ftf.OutputLevel=DEBUG
MinHits = 5)
acc.addEventAlgo( ftf )
#CondSvc=CompFactory.CondSvc
#acc.addService(CondSvc())
#from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool
#from TrigInDetConf.TrigInDetPostTools import InDetTrigParticleCreatorToolFTF
#InDet__TrigTrackingxAODCnvMT=CompFactory.InDet.TrigTrackingxAODCnvMT
#theTrackParticleCreatorAlg = InDet__TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg",
# doIBLresidual = False,
# TrackName = "TrigFastTrackFinder_Tracks",
# TrackParticlesName = "IDTrack",
# ParticleCreatorTool = InDetTrigParticleCreatorToolFTF)
#theTrackParticleCreatorAlg.roiCollectionName = roisKey
#acc.addEventAlgo(theTrackParticleCreatorAlg)
creatorTool = CompFactory.Trk.TrackParticleCreatorTool( name = "InDetTrigParticleCreatorToolFTF",
Extrapolator = acc.getPublicTool( "TrigInDetExtrapolator" ),
TrackSummaryTool = acc.getPublicTool( "TrigSummaryTool_FTF" ),
KeepParameters = True,
ComputeAdditionalInfo = True)
acc.addPublicTool(creatorTool)
trackParticleCnv=CompFactory.InDet.TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg" + signature,
TrackName = ftf.TracksName,
TrackParticlesName = "TrigFastTrackFinder_Tracks_" + signature,
ParticleCreatorTool = acc.getPublicTool("InDetTrigParticleCreatorToolFTF"))
acc.addEventAlgo(trackParticleCnv)
return acc
def indetInViewRecoCfg( flags, viewMakerName, signature='' ):
def indetInViewRecoCfg( inflags, viewMakerName, signature='' ):
""" TBD if this function should be defined here or moved to the menu are, for sake of symmetry it is kept here now
There would certainly be additional algorithms
"""
# redirect InDet.Tracking flags to point to a specific trigger setting
flags = inflags.cloneAndReplace("InDet.Tracking", "Trigger.InDetTracking."+signature)
from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco
reco = InViewReco( viewMakerName )
algAcc = TrigInDetConfig( flags, roisKey=reco.inputMaker().InViewRoIs, signatureName=signature )
......@@ -761,7 +757,7 @@ if __name__ == "__main__":
from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
acc.merge(ByteStreamReadCfg(ConfigFlags))
acc.merge( TrigInDetConfig( ConfigFlags ) )
acc.merge( indetInViewRecoCfg( ConfigFlags, viewMakerName="IMTest", signature="Electron" ) )
from RegionSelector.RegSelConfig import regSelCfg
rsc = regSelCfg( ConfigFlags )
acc.merge( rsc )
......
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
import AthenaCommon.SystemOfUnits as Units
from AthenaConfiguration.AthConfigFlags import AthConfigFlags
from InDetConfig.TrackingCutsFlags import createTrackingFlags
def __sliceFlags():
flags = createTrackingFlags()
flags.addFlag("seedRadBinWidth", 2)
flags.addFlag("d0SeedMax", 4.0)
flags.addFlag("d0SeedPPSMax", 1.7)
flags.addFlag("doCloneRemoval", True)
flags.addFlag("doResMon", False)
flags.addFlag("checkRedundantSeeds", False)
return flags
def __electronFlags():
flags = __sliceFlags()
flags.minPT = Units.GeV * 0.5 # TODO revise values
flags.checkRedundantSeeds=True
return flags
def createTrigTrackingFlags():
flags = AthConfigFlags()
flags.addFlagsCategory('Trigger.InDetTracking.Electron', __electronFlags, prefix=True)
return flags
if __name__ == "__main__":
from AthenaCommon.Logging import logging
_msg = logging.getLogger('AthConfigFlags')
_msg.setLevel(2)
from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags
flags.Trigger.doID
flags.dump(".*Trig")
flags.Trigger.InDetTracking.Electron.minPT = 2.0 * Units.GeV
newflags = flags.cloneAndReplace('InDet.Tracking', 'Trigger.InDetTracking.Electron')
assert newflags.InDet.Tracking.minPT == 2.0 * Units.GeV
flags.dump()
\ No newline at end of file
......@@ -275,6 +275,8 @@ def createTriggerFlags():
return createMuonConfigFlags()
flags.addFlagsCategory('Trigger.Offline', __muon, prefix=True)
from TrigInDetConfig.TrigTrackingCutFlags import createTrigTrackingFlags
flags.addFlagsCategory( 'Trigger.InDetTracking', createTrigTrackingFlags )
from TriggerJobOpts.MenuConfigFlags import createMenuFlags
flags.join( createMenuFlags() )
......
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