diff --git a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py index c72803f5bcf265b18e91349293a0b4a0513e4e50..d60f3c50e494f28e5daf4dcb39ea4cd4d14e64a5 100755 --- a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py @@ -1,5 +1,6 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + ######################################################################### # ConfiguredNewtrackingCuts class ######################################################################### @@ -634,6 +635,35 @@ class ConfiguredNewTrackingCuts : self.__nWeightedClustersMin = 4 self.__minSiNotShared = 4 self.__rejectShortExtensions = False + + if mode == "DBM": + self.__minEta = 3.05 + self.__maxEta = 3.45 + self.__Xi2maxNoAdd = 10000 + self.__Xi2max = 10000 + self.__nWeightedClustersMin = 0 + self.__seedFilterLevel = 1 + self.__maxdImpactPPSSeeds = 100000.0 * Units.mm + self.__maxdImpactSSSSeeds = 100000.0 * Units.mm + self.__maxPrimaryImpact = 100000.0 * Units.mm # low lumi + self.__maxZImpact = 320000.0 * Units.mm # Was 250 mm + self.__maxPT = 100000.0 * Units.GeV # some overlap + self.__minPT = 0.0 * Units.GeV + self.__minClusters = 0 + self.__minSiNotShared = 0 + self.__maxShared = 1000 # cut is now on number of shared modules + self.__minPixel = 0 + self.__maxHoles = 10000 + self.__maxPixelHoles = 10000 + self.__maxSctHoles = 20000 + self.__maxDoubleHoles = 10000 + self.__radMax = 600000. * Units.mm + self.__nHolesMax = self.__maxHoles + self.__nHolesGapMax = self.__maxHoles # not as tight as 2*maxDoubleHoles + self.__useTRT = False + self.__useSCT = False + self.__usePixel = True + # elif rec.Commissioning(): # self.__minClusters = 7 # Igor 6, was 7 diff --git a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py index 52d8958cd216a242a0a3100a2751046612bdac9f..799bd280a61221123c16856ec248eb09c325225b 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py @@ -72,7 +72,10 @@ class ConfiguredVertexingCuts : #cuts ONLY relevant to InDetPriVxFinder + Full or Fast or similar self.__chi2CutMethod = 2 - self.__enableMultipleVertices = True + self.__enableMultipleVertices = True + + self.__doMaxTracksCut = False + self.__MaxTracks = 5000 #Not applied anyway if above false #----------------------------------------------------------------------- #End of the default track pre-selection block @@ -122,6 +125,12 @@ class ConfiguredVertexingCuts : if (self.__indetflags.doMinBias()): self.__minPT = 100. * Units.MeV + + if not (self.__indetflags.useBeamConstraint()) and not (mode == "HeavyIon") and not (mode == "SLHC"): + # Cut on multiplicity for IterativeFinder if no beamspot constraint, to avoid timeouts + self.__doMaxTracksCut = True + self.__MaxTracks = 3000 + #--------------"Hight PileUp mode, setup for 2012 ?"--------------------- # Same Pt cut of 400, higher requirements for the track quality @@ -282,6 +291,12 @@ class ConfiguredVertexingCuts : def enableMultipleVertices(self): return self.__enableMultipleVertices + def doMaxTracksCut(self): + return self.__doMaxTracksCut + + def MaxTracks(self): + return self.__MaxTracks + #------------------------------------------------------------------------- # Print method dumping the summary of the current cut configuration # diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py index e54af525c846c220b70c61d15cb0e72c1b147fb6..98feda302d90af6987a48bbcf680a92d51c8b881 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py @@ -1,6 +1,7 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + # ## @file InDetRecExample/python/InDetJobProperties.py ## @purpose Python module to hold common flags to configure JobOptions @@ -96,6 +97,12 @@ class InDetFlagsJobProperty(JobProperty): ##----------------------------------------------------------------------------- ## 1st step: define JobProperty classes + +class doDBM(InDetFlagsJobProperty): + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + class doPrintConfigurables(InDetFlagsJobProperty): """if this is on the all the print InDetXYZ lines are activated""" statusOn = True @@ -509,10 +516,10 @@ class doVertexFinding(InDetFlagsJobProperty): StoredValue = True class primaryVertexSetup(InDetFlagsJobProperty): - """ string to store the type of finder/fitter for pri vertexing, possible types: 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding' """ + """ string to store the type of finder/fitter for pri vertexing, possible types: 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding' 'MedImgMultiFinding' """ statusOn = True allowedTypes = ['str'] - allowedValues= [ 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding', 'DummyVxFinder'] + allowedValues= [ 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding', 'DummyVxFinder', 'MedImgMultiFinding'] StoredValue = 'IterativeFinding' class primaryVertexCutSetup(InDetFlagsJobProperty): @@ -1124,6 +1131,7 @@ class InDetJobProperties(JobPropertyContainer): self.checkThenSet(self.materialInteractionsType , 2) self.checkThenSet(self.selectSCTIntimeHits , False) self.checkThenSet(self.cutLevel , 8 ) + self.checkThenSet(self.doInnerDetectorCommissioning, True) # --- special case heavy ion elif (rec.doHeavyIon()): @@ -1403,7 +1411,8 @@ class InDetJobProperties(JobPropertyContainer): # self.checkThenSet(self.doInnerDetectorCommissioning, True) if (self.doInnerDetectorCommissioning()): - self.checkThenSet(self.useBroadClusterErrors , True) + if not (self.doCosmics()): + self.checkThenSet(self.useBroadClusterErrors , True) self.checkThenSet(self.doSlimming , False) self.checkThenSet(self.doTrackSegmentsPixel, True ) self.checkThenSet(self.doTrackSegmentsSCT , True ) @@ -1814,6 +1823,10 @@ class InDetJobProperties(JobPropertyContainer): print '*' print '* --------------------> Special reconstruction for IBL !' print '*' + if self.doDBM() : + print '*' + print '* --------------------> Special reconstruction for DBM !' + print '*' if self.doHighPileup() : print '*' print '* --------------------> Special reconstruction for high pile-up !' @@ -2382,7 +2395,8 @@ _list_InDetJobProperties = [Enabled, doTRTOccupancyEventInfo, doNNToTCalibration, keepAdditionalHitsOnTrackParticle, - doSCTModuleVeto + doSCTModuleVeto, + doDBM ] for j in _list_InDetJobProperties: jobproperties.InDetJobProperties.add_JobProperty(j) diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py index a0c6fa8b203f2fc34f5bf40c140647aab805fb69..c84a7cedc225df27050a0a5f3a820ab64b44aec3 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py @@ -1,3 +1,4 @@ + # Blocking the include for after first inclusion include.block ('InDetRecExample/ConfiguredInDetValidation.py') @@ -73,6 +74,20 @@ class ConfiguredInDetValidation: InDetRecStatistics.minREndSecondary = 0. InDetRecStatistics.minZEndPrimary = 0. InDetRecStatistics.minZEndSecondary = 0. + + + if InDetFlags.doDBM(): + InDetRecStatistics.minPt = .0*GeV + InDetRecStatistics.maxEta = 9999. + InDetRecStatistics.maxRStartPrimary = 9999999. + InDetRecStatistics.maxRStartSecondary = 9999999. + InDetRecStatistics.maxZStartPrimary = 9999999. + InDetRecStatistics.maxZStartSecondary = 9999999. + InDetRecStatistics.minREndPrimary = 0. + InDetRecStatistics.minREndSecondary = 0. + InDetRecStatistics.minZEndPrimary = 0. + InDetRecStatistics.minZEndSecondary = 0. + topSequence += InDetRecStatistics if (InDetFlags.doPrintConfigurables()): @@ -109,6 +124,15 @@ class ConfiguredInDetValidation: InDetTrackClusterAssValidation.MinNumberSpacePoints = 4 if InDetFlags.doBeamHalo(): InDetTrackClusterAssValidation.MomentumCut = 0 + + if InDetFlags.doDBM(): + InDetTrackClusterAssValidation.MomentumCut = 0 + InDetTrackClusterAssValidation.RadiusMax = 9999999.0 + InDetTrackClusterAssValidation.RapidityCut = 9999.9 + InDetTrackClusterAssValidation.MinNumberClustersTRT = 0 + InDetTrackClusterAssValidation.MinNumberClusters = 0 + InDetTrackClusterAssValidation.MinNumberSpacePoints = 0 + topSequence += InDetTrackClusterAssValidation if (InDetFlags.doPrintConfigurables()): diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py index 6110bd8f5edd9094332a8dc7e2008b8009fc2771..1f33a87906cb7cee51cdf5608cbc891715818d36 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py @@ -1,3 +1,4 @@ + # Blocking the include for after first inclusion include.block ('InDetRecExample/ConfiguredNewTrackingSiPattern.py') @@ -50,7 +51,7 @@ class ConfiguredNewTrackingSiPattern: # # --- Space points seeds maker, use different ones for cosmics and collisions # - if InDetFlags.doCosmics(): + if (InDetFlags.doCosmics() and NewTrackingCuts.mode() != "DBM"): from SiSpacePointsSeedTool_xk.SiSpacePointsSeedTool_xkConf import InDet__SiSpacePointsSeedMaker_Cosmic as SiSpacePointsSeedMaker elif InDetFlags.doHeavyIon(): from SiSpacePointsSeedTool_xk.SiSpacePointsSeedTool_xkConf import InDet__SiSpacePointsSeedMaker_HeavyIon as SiSpacePointsSeedMaker @@ -101,7 +102,23 @@ class ConfiguredNewTrackingSiPattern: InDetSiSpacePointsSeedMaker.etaMin = NewTrackingCuts.minEta() InDetSiSpacePointsSeedMaker.etaMax = NewTrackingCuts.maxEta() InDetSiSpacePointsSeedMaker.RapidityCut = NewTrackingCuts.maxEta() - + if NewTrackingCuts.mode() == "DBM": + InDetSiSpacePointsSeedMaker.checkEta = True + InDetSiSpacePointsSeedMaker.etaMin = NewTrackingCuts.minEta() + InDetSiSpacePointsSeedMaker.etaMax = NewTrackingCuts.maxEta() + InDetSiSpacePointsSeedMaker.pTmin = 0 + InDetSiSpacePointsSeedMaker.mindRadius = 0 + InDetSiSpacePointsSeedMaker.maxdRadius = 100000 + InDetSiSpacePointsSeedMaker.mindRadius = 0 + InDetSiSpacePointsSeedMaker.maxdZver = 1000000 + InDetSiSpacePointsSeedMaker.maxdZdRver = 1000000 + InDetSiSpacePointsSeedMaker.maxdImpactSSS = 100000 + InDetSiSpacePointsSeedMaker.maxdImpactPPS = 100000 + InDetSiSpacePointsSeedMaker.minVRadius2 = 0 + InDetSiSpacePointsSeedMaker.maxVRadius1 = 1000000 + InDetSiSpacePointsSeedMaker.maxVRadius2 = 1000000 + InDetSiSpacePointsSeedMaker.RapidityCut = 5.0 + #InDetSiSpacePointsSeedMaker.OutputLevel = VERBOSE ToolSvc += InDetSiSpacePointsSeedMaker @@ -142,6 +159,10 @@ class ConfiguredNewTrackingSiPattern: useSCT = NewTrackingCuts.useSCT(), SCTManagerLocation = InDetKeys.SCT_Manager(), RoadWidth = NewTrackingCuts.RoadWidth()) + if NewTrackingCuts.mode() == "DBM": + InDetSiDetElementsRoadMaker.MagneticFieldMode = "NoField" + + #InDetSiDetElementsRoadMaker.OutputLevel = VERBOSE ToolSvc += InDetSiDetElementsRoadMaker if (InDetFlags.doPrintConfigurables()): @@ -151,7 +172,7 @@ class ConfiguredNewTrackingSiPattern: # --- Local track finding using sdCaloSeededSSSpace point seed # - useBremMode = NewTrackingCuts.mode() == "Offline" or NewTrackingCuts.mode() == "SLHC" + useBremMode = NewTrackingCuts.mode() == "Offline" or NewTrackingCuts.mode() == "SLHC" or NewTrackingCuts.mode() == "DBM" from SiTrackMakerTool_xk.SiTrackMakerTool_xkConf import InDet__SiTrackMaker_xk as SiTrackMaker InDetSiTrackMaker = SiTrackMaker(name = 'InDetSiTrackMaker'+NewTrackingCuts.extension(), useSCT = NewTrackingCuts.useSCT(), @@ -181,9 +202,16 @@ class ConfiguredNewTrackingSiPattern: InputHadClusterContainerName = InDetKeys.HadCaloClusterROIContainer(), # "InDetCaloClusterROIs" UseAssociationTool = usePrdAssociationTool) + if NewTrackingCuts.mode() == "DBM": + InDetSiTrackMaker.MagneticFieldMode = "NoField" + InDetSiTrackMaker.pTminBrem = 0 + InDetSiTrackMaker.pTminSSS = 0 + InDetSiTrackMaker.useSCT = False + InDetSiTrackMaker.useBremModel = False + InDetSiTrackMaker.useSSSseedsFilter = False + - - if InDetFlags.doCosmics(): + if (InDetFlags.doCosmics() and NewTrackingCuts.mode() != "DBM"): InDetSiTrackMaker.TrackPatternRecoInfo = 'SiSpacePointsSeedMaker_Cosmic' elif InDetFlags.doHeavyIon(): @@ -247,7 +275,9 @@ class ConfiguredNewTrackingSiPattern: useMBTSTimeDiff = InDetFlags.useMBTSTimeDiff(), useZBoundFinding = NewTrackingCuts.doZBoundary()) - + if NewTrackingCuts.mode() == "DBM": + InDetSiSPSeededTrackFinder.Zcut = 0 + #InDetSiSPSeededTrackFinder.OutputLevel =VERBOSE topSequence += InDetSiSPSeededTrackFinder if (InDetFlags.doPrintConfigurables()): @@ -370,6 +400,9 @@ class ConfiguredNewTrackingSiPattern: # --- load Ambiguity Processor # useBremMode = NewTrackingCuts.mode() == "Offline" or NewTrackingCuts.mode() == "SLHC" + if NewTrackingCuts.mode() == "DBM": + InDetTrackFitter.StraightLine = True + if InDetFlags.doTIDE_Ambi() and not (NewTrackingCuts.mode() == "ForwardSLHCTracks" or NewTrackingCuts.mode() == "ForwardTracks" or NewTrackingCuts.mode() == "PixelPrdAssociation"): from TrkAmbiguityProcessor.TrkAmbiguityProcessorConf import Trk__DenseEnvironmentsAmbiguityProcessorTool as ProcessorTool @@ -389,7 +422,7 @@ class ConfiguredNewTrackingSiPattern: InDetAmbiguityProcessor.sharedProbCut2 = InDetFlags.pixelClusterSplitProb2() InDetAmbiguityProcessor.SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap() - if NewTrackingCuts.mode() == "Pixel": + if NewTrackingCuts.mode() == "Pixel" or NewTrackingCuts.mode() == "DBM": InDetAmbiguityProcessor.SuppressHoleSearch = True if NewTrackingCuts.mode() == "LowPt" or NewTrackingCuts.mode() == "VeryLowPt" or (NewTrackingCuts.mode() == "Pixel" and InDetFlags.doMinBias()): InDetAmbiguityProcessor.Fitter = InDetTrackFitterLowPt diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py index 57c149a23b21c5ba4bc7cec16d0633b220cbe8bc..a7bacc3b2cf719242b48dba55105edde38aa7391 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py @@ -13,168 +13,168 @@ InDetAlignMonReadESD = False # NOTE: Include the following BEFORE adding InDetAlignMonManager to topSequence. # include('InDetAlignmentMonitoring/InDetAlignmentMonitoring_vertexing.py') -from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool + +from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool #loading the InDetTrackSelectionTool from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import InDetAlignMon__TrackSelectionTool +#Here are to load the track selection tool. +#The alignMonTrackSelectionTool is a custom made trackselection tool that interface the monitoring tools to the track selection and make some +#high level cuts (if everything passes, comTime, EventPhase, PrimaryVertex ..) +#It can call the InDetDetailedTrackSelectorTool or the InDetTrackSelectionTool, that actually make the track selection + +m_alignMonTrackSelectorTool =[] +m_alignMonTrackSelectionTool =[] + -m_alignMonTrackSelectorTool = [] -m_alignMonTrackSelectionTool = [] if not jobproperties.Beam.beamType()=='cosmics': # - # Collisions and single beam running + # Collisions and single beam running # - - # Default track selector used by most modules - m_alignMonTrackSelectorTool.append(InDet__InDetDetailedTrackSelectorTool(name = "InDetAlignDetailedTrackSelectorTool", - pTMin = 5000.0, #5 GeV - IPd0Max = 100000.0, #no cut on d0 yet - IPz0Max = 150.0, #actual cut is on sin(theta)*z0 - nHitBLayer = 0, #overriding default - nHitPix = 0, #overriding default - nHitSct = 0, #overriding default - nHitSi = 9, #overriding default - nHitTrt = 15,#overriding default - nSharedSct = 0, #overriding default - InDetTestBLayerTool = InDetRecTestBLayerTool, - TrackSummaryTool = InDetTrackSummaryTool, - Extrapolator = InDetExtrapolator)) - - # Alternative track selector used by SivsTRT module which has same cuts as default but with no cuts on TRT hits - m_alignMonTrackSelectorTool.append(InDet__InDetDetailedTrackSelectorTool(name = "InDetAlignDetailedTrackSelectorTool_noTRT", - pTMin = 5000.0, #2 GeV - IPd0Max = 100000.0, #no cut on d0 yet - IPz0Max = 150.0, #actual cut is on sin(theta)*z0 - nHitBLayer = 0, #overriding default - nHitPix = 0, #overriding default - nHitSct = 0, #overriding default - nHitSi = 9, #overriding default - nHitTrt = 0,#overriding default - nSharedSct = 0, #overriding default - InDetTestBLayerTool = InDetRecTestBLayerTool, - TrackSummaryTool = InDetTrackSummaryTool, - Extrapolator = InDetExtrapolator)) - - + # Track selector that implement the Tracking CP supported cuts for Run2 using loosePrimary cut + m_alignMonTrackSelectorTool.append(InDet__InDetTrackSelectionTool(name = "InDetTrackSelectionTool_LoosePrimary", + UseTrkTrackTools = True, + minPt = 5000, + maxD0 = 100000, + maxZ0SinTheta = 150, + CutLevel = "LoosePrimary", + TrackSummaryTool = InDetTrackSummaryTool, + Extrapolator = InDetExtrapolator)) + + + # Track selector that implement the Tracking CP supported cuts for Run2 using tightPrimary cut + m_alignMonTrackSelectorTool.append(InDet__InDetTrackSelectionTool(name = "InDetTrackSelectionTool_NoTRT", + UseTrkTrackTools = True, + minPt = 5000, + maxD0 = 100000, + maxZ0SinTheta = 150, + minNTrtHits = 0, + CutLevel = "LoosePrimary", + TrackSummaryTool = InDetTrackSummaryTool, + Extrapolator = InDetExtrapolator)) + if jobproperties.Beam.beamType()=='singlebeam': - m_alignMonTrackSelectorTool[0].pTMin = 0.0 - m_alignMonTrackSelectorTool[0].IPz0Max = 100000.0 - m_alignMonTrackSelectorTool[1].pTMin = 0.0 - m_alignMonTrackSelectorTool[1].IPz0Max = 100000.0 - + m_alignMonTrackSelectorTool[0].minPt = 0.0 + m_alignMonTrackSelectorTool[0].maxZ0SinTheta = 100000.0 + m_alignMonTrackSelectorTool[1].minPt = 0.0 + m_alignMonTrackSelectorTool[1].maxZ0SinTheta = 100000.0 + + #Adding the tools to the Tool Service + ToolSvc += m_alignMonTrackSelectorTool[0] ToolSvc += m_alignMonTrackSelectorTool[1] - - if (InDetFlags.doPrintConfigurables()): - print m_alignMonTrackSelectorTool[0] - print m_alignMonTrackSelectorTool[1] - - m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name = "InDetAlignMonTrackSelectionTool", - #PassAllTracks = True, ## Uncomment this line to bypass track slection - TrackSelectorTool = m_alignMonTrackSelectorTool[0])) - m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name = "InDetAlignMonTrackSelectionTool_noTRT", - #PassAllTracks = True, ## Uncomment this line to bypass track slection - TrackSelectorTool = m_alignMonTrackSelectorTool[1])) + #Here we start creating the custom Track Selection tools. + + m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name = "InDetAlignMonTrackSelectionTool_LoosePrimary", + #PassAllTracks = True, ## Uncomment this line to bypass track slection + IDTrackSelectionTool = m_alignMonTrackSelectorTool[0], + UseIDTrackSelectionTool = True)) + + m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name = "InDetAlignMonTrackSelectionTool_LoosePrimary_NoTRT", + #PassAllTracks = True, ## Uncomment this line to bypass track slection + IDTrackSelectionTool = m_alignMonTrackSelectorTool[1], + UseIDTrackSelectionTool = True)) + + + #Adding the TrackSelectionTools to the Tool Service ToolSvc += m_alignMonTrackSelectionTool[0] ToolSvc += m_alignMonTrackSelectionTool[1] - if (InDetFlags.doPrintConfigurables()): - print m_alignMonTrackSelectionTool[0] - print m_alignMonTrackSelectionTool[1] - + + #if (InDetFlags.doPrintConfigurables()): + print m_alignMonTrackSelectionTool[0] + print m_alignMonTrackSelectionTool[1] + + #Starting the creation of the monitoring tools + + + if not jobproperties.Beam.beamType()=='singlebeam': + from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import IDAlignMonSivsTRT InDetAlignMonSivsTRT_noTrig = IDAlignMonSivsTRT (name = "InDetAlignMonSivsTRT_noTrig", - trackSelection = m_alignMonTrackSelectionTool[1]) + trackSelection = m_alignMonTrackSelectionTool[0]) + ToolSvc += InDetAlignMonSivsTRT_noTrig if (InDetFlags.doPrintConfigurables()): print InDetAlignMonSivsTRT_noTrig + from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import InDetAlignMonBeamSpot InDetAlignMonBeamSpot_noTrig = InDetAlignMonBeamSpot (name = "InDetAlignMonBeamSpot_noTrig", extrapolator = InDetExtrapolator, vxContainerName = InDetKeys.PrimaryVertices(), vxContainerWithBeamConstraint = InDetFlags.useBeamConstraint()) + ToolSvc += InDetAlignMonBeamSpot_noTrig if (InDetFlags.doPrintConfigurables()): print InDetAlignMonBeamSpot_noTrig - # Note this is not included in the tool service + + # Note this is not to be included in the tool service from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import IDAlignMonNtuple InDetAlignMonNtuple = IDAlignMonNtuple (name = "InDetAlignMonNtuple", tracksName = InDetKeys.ExtendedTracks(), tracksTruthName = InDetKeys.ExtendedTracksTruth()) - - + else: # - # Cosmic running + # Cosmics Running # + + # Original set of selectors m_trackSelectorToolName = ["InDetAlignCosmicTrackSelectorTool","InDetAlignCosmicTrackSelector_Half","PixTrackSelectorTool", "PixUpLowTrackSelectorTool","SCTTrackSelectorTool","SCTUpLowTrackSelectorTool","SiTrackSelectorTool", "SiUpSiLowTrackSelectorTool","TRTonlyTrackSelectorTool","TRTUpTRTLowTrackSelectorTool"] - m_nHitBLayer = [ 0, 1,2,1, 0,0, 2,1, 0, 0] - m_nHitPix = [ 3, 3,5,3, 0,0, 5,3, 0, 0] - m_nHitSct = [ 8, 8,0,0,14,8,14,8, 0, 0] - m_nHitTrt = [30,25,0,0, 0,0, 0,0,30,30] + + + + m_minNInnermostLayerHits = [ 0, 1,2,1, 0,0, 2,1, 0, 0] + m_minNPixelHits = [ 3, 3,5,3, 0,0, 5,3, 0, 0] + m_minNSctHits = [ 8, 8,0,0,14,8,14,8, 0, 0] + m_minNTrtHits = [30,25,0,0, 0,0, 0,0,30,30] m_alignMonTrackSelectionToolName = ["InDetAlignMonTrackSelectionTool","InDetAlignMonTrackSelectionTool_Half","PixTrackSelectionTool", "PixUpLowTrackSelectionTool","SCTTrackSelectionTool","SCTUpLowTrackSelectionTool","SiTrackSelectionTool", - "SiUpSiLowTrackSelectionTool","TRTonlyTrackSelectionTool","TRTUpTRTLowTrackSelectionTool" ] + "SiUpSiLowTrackSelectionTool","TRTonlyTrackSelectionTool","TRTUpTRTLowTrackSelectionTool"] + + for i in range(10): - m_alignMonTrackSelectorTool.append(InDet__InDetDetailedTrackSelectorTool(name = m_trackSelectorToolName[i], - pTMin = 1000.0,#1 GeV - IPd0Max = 50.0,#no cut on d0 yet - IPz0Max = 1200.0,#actual cut is on sin(theta)*z0 - nHitBLayer = m_nHitBLayer[i], - nHitPix = m_nHitPix[i], - nHitSct = m_nHitSct[i], - nHitSi = 0, - nHitTrt = m_nHitTrt[i], - nSharedSct = 0, - InDetTestBLayerTool = InDetRecTestBLayerTool, - TrackSummaryTool = InDetTrackSummaryTool, - Extrapolator = InDetExtrapolator)) + m_alignMonTrackSelectorTool.append(InDet__InDetTrackSelectionTool(name = m_trackSelectorToolName[i], + minPt = 1000.0,#1 GeV + maxD0 = 50.0,#no cut on d0 yet + maxZ0SinTheta = 1200.0,#actual cut is on sin(theta)*z0 + minNInnermostLayerHits = m_minNInnermostLayerHits[i], + minNPixelHits = m_minNPixelHits[i], + minNSctHits = m_minNSctHits[i], + minNTrtHits = m_minNTrtHits[i], + UseTrkTrackTools = True, + CutLevel = "LoosePrimary", + TrackSummaryTool = InDetTrackSummaryTool, + Extrapolator = InDetExtrapolator)) ToolSvc += m_alignMonTrackSelectorTool[i] if (InDetFlags.doPrintConfigurables()): print m_alignMonTrackSelectorTool[i] - + + + m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name = m_alignMonTrackSelectionToolName[i], - ## Uncomment this line to bypass track slection + ## Uncomment this line to bypass track selection #PassAllTracks = True, #DoEventPhaseCut = True, - TrackSelectorTool = m_alignMonTrackSelectorTool[i])) + UseIDTrackSelectionTool = True, + IDTrackSelectionTool = m_alignMonTrackSelectorTool[i])) + if jobproperties.Beam.beamType()=='singlebeam': m_alignMonTrackSelectionTool[i].PassAllTracks = True ToolSvc += m_alignMonTrackSelectionTool[i] if (InDetFlags.doPrintConfigurables()): print m_alignMonTrackSelectionTool[i] - - -# -# The Truth -# -if InDetAlignMonDoTruth: - from TrkTruthToTrack.TrkTruthToTrackConf import Trk__TruthToTrack - InDetAlignTruthToTrackTool = Trk__TruthToTrack( name = "InDetAlignTruthToTrackTool", - Extrapolator = InDetExtrapolator ) - ToolSvc += InDetAlignTruthToTrackTool - if (InDetFlags.doPrintConfigurables()): - print InDetAlignTruthToTrackTool - - from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import IDAlignMonTruthComparison - InDetAlignMonTruthComparison = IDAlignMonTruthComparison (name = "InDetAlignMonTruthComparison", - trackSelection = m_alignMonTrackSelectionTool[1], - tracksName = InDetKeys.ExtendedTracks(), - tracksTruthName = InDetKeys.ExtendedTracksTruth(), - TruthToTrackTool = InDetAlignTruthToTrackTool) - ToolSvc += InDetAlignMonTruthComparison - if (InDetFlags.doPrintConfigurables()): - print InDetAlignMonTruthComparison + # # Residuals diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py index 7906ae282860b9f30ebb18d17549f524f40f656c..fb41347d058575ec4da06e199727ca262b5e71d9 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py @@ -1,3 +1,4 @@ + # ------------------------------------------------------------ # # ----------- Loading the Tracking Services @@ -110,7 +111,7 @@ if InDetFlags.loadRotCreator(): # tool to always make conservative pixel cluster errors from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool PixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackTool", - DisableDistortions = InDetFlags.doFatras(), + DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBM()), applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet'), NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and @@ -122,7 +123,7 @@ if InDetFlags.loadRotCreator(): if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet': PixelClusterOnTrackTool.NnClusterizationFactory = NnClusterizationFactory - if InDetFlags.doCosmics(): + if InDetFlags.doCosmics() or InDetFlags.doDBM(): PixelClusterOnTrackTool.ErrorStrategy = 0 PixelClusterOnTrackTool.PositionStrategy = 0 @@ -163,7 +164,7 @@ if InDetFlags.loadRotCreator(): from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool BroadPixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetBroadPixelClusterOnTrackTool", ErrorStrategy = 0, - DisableDistortions = InDetFlags.doFatras(), + DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBM()), applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet'), NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and @@ -172,6 +173,9 @@ if InDetFlags.loadRotCreator(): RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi() ) + if InDetFlags.doDBM(): + BroadPixelClusterOnTrackTool.PositionStrategy = 0 + if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet': BroadPixelClusterOnTrackTool.NnClusterizationFactory = NnClusterizationFactory @@ -360,6 +364,9 @@ if InDetFlags.loadExtrapolator(): InDetMaterialUpdator.EnergyLoss = False InDetMaterialUpdator.ForceMomentum = True InDetMaterialUpdator.ForcedMomentumValue = 1000*MeV + if InDetFlags.doDBM(): + InDetMaterialUpdator.EnergyLoss = False + InDetMaterialUpdator.ForceMomentum = False ToolSvc += InDetMaterialUpdator @@ -572,6 +579,13 @@ if InDetFlags.loadFitter(): RecalculateDerivatives= InDetFlags.doMinBias() or InDetFlags.doCosmics() or InDetFlags.doBeamHalo(), TRTExtensionCuts = True, TrackChi2PerNDFCut = 7) + if InDetFlags.doDBM(): + InDetTrackFitter.StraightLine = True + InDetTrackFitter.OutlierCut = 5 + InDetTrackFitter.RecalibrateTRT = False + InDetTrackFitter.TRTExtensionCuts = False + InDetTrackFitter.TrackChi2PerNDFCut = 20 + if InDetFlags.doRefit() or use_broad_cluster_any == True: InDetTrackFitter.RecalibrateSilicon = False if InDetFlags.doRefit(): @@ -695,9 +709,10 @@ if InDetFlags.loadFitter(): InDetTrackFitterTRT=InDetTrackFitter InDetTrackFitterLowPt=InDetTrackFitter else: - ToolSvc += InDetTrackFitterTRT - if (InDetFlags.doPrintConfigurables()): - print InDetTrackFitterTRT + if not InDetFlags.doDBM(): + ToolSvc += InDetTrackFitterTRT + if (InDetFlags.doPrintConfigurables()): + print InDetTrackFitterTRT if InDetFlags.doLowPt() or (InDetFlags.doTrackSegmentsPixel() and InDetFlags.doMinBias()): ToolSvc+=InDetTrackFitterLowPt if (InDetFlags.doPrintConfigurables()): @@ -944,14 +959,15 @@ if InDetFlags.doPattern(): # # TRT detector elements road builder # - from TRT_DetElementsRoadTool_xk.TRT_DetElementsRoadTool_xkConf import InDet__TRT_DetElementsRoadMaker_xk - InDetTRTDetElementsRoadMaker = InDet__TRT_DetElementsRoadMaker_xk(name = 'InDetTRT_RoadMaker', - TRTManagerLocation = InDetKeys.TRT_Manager(), - RoadWidth = 20., - PropagatorTool = InDetPatternPropagator) - ToolSvc += InDetTRTDetElementsRoadMaker - if (InDetFlags.doPrintConfigurables()): - print InDetTRTDetElementsRoadMaker + if not InDetFlags.doDBM(): + from TRT_DetElementsRoadTool_xk.TRT_DetElementsRoadTool_xkConf import InDet__TRT_DetElementsRoadMaker_xk + InDetTRTDetElementsRoadMaker = InDet__TRT_DetElementsRoadMaker_xk(name = 'InDetTRT_RoadMaker', + TRTManagerLocation = InDetKeys.TRT_Manager(), + RoadWidth = 20., + PropagatorTool = InDetPatternPropagator) + ToolSvc += InDetTRTDetElementsRoadMaker + if (InDetFlags.doPrintConfigurables()): + print InDetTRTDetElementsRoadMaker # # TRT segment minimum number of drift circles tool @@ -985,7 +1001,8 @@ if InDetFlags.doPattern(): SCTManagerLocation = InDetKeys.SCT_Manager(), PixelClusterContainer = InDetKeys.PixelClusters(), SCT_ClusterContainer = InDetKeys.SCT_Clusters()) - + if InDetFlags.doDBM(): + InDetSiComTrackFinder.MagneticFieldMode = "NoField" if (DetFlags.haveRIO.SCT_on()): InDetSiComTrackFinder.SctSummarySvc = InDetSCT_ConditionsSummarySvc else: @@ -1213,11 +1230,34 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o # if (InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or InDetFlags.primaryVertexSetup() == 'IterativeFinding' or - InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding'): + InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding' or + InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding' ): # # --- load configured Seed finder # - if (InDetFlags.doPrimaryVertex3DFinding()): + if (InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding'): + from TrkVertexSeedFinderUtils.TrkVertexSeedFinderUtilsConf import Trk__LocalMax1DClusterFinder, Trk__VertexImageMaker + InDetMedImgClusterFinder = Trk__LocalMax1DClusterFinder( name = "InDetMedImgClusterFinder", + weightThreshold = 0.02, + mergeParameter = 0.5, + clusterWindowXY = 3.0 ) + ToolSvc += InDetMedImgClusterFinder + InDetMedImgMaker = Trk__VertexImageMaker( name = "InDetMedImgMaker", + xbins = 16, + ybins = 16, + zbins = 1024, + xrange = 2.0, + yrange = 2.0, + zrange = 200.0, + cutoffFreqDenominator_xy = 2, + cutoffFreqDenominator_z = 1 ) + ToolSvc += InDetMedImgMaker + from TrkVertexSeedFinderTools.TrkVertexSeedFinderToolsConf import Trk__ImagingSeedFinder + InDetVtxSeedFinder = Trk__ImagingSeedFinder( name = "InDetMedImgSeedFinder", + VertexCluster = InDetMedImgClusterFinder, + VertexImageMaker = InDetMedImgMaker ) + + elif (InDetFlags.doPrimaryVertex3DFinding()): from TrkVertexSeedFinderTools.TrkVertexSeedFinderToolsConf import Trk__CrossDistancesSeedFinder InDetVtxSeedFinder = Trk__CrossDistancesSeedFinder(name = "InDetCrossDistancesSeedFinder", trackdistcutoff = 1., @@ -1369,7 +1409,8 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o # load smoother in case of 'DefaultKalmanFinding', 'DefaultAdaptiveFinding' or 'IterativeFinding' if (InDetFlags.primaryVertexSetup() == 'DefaultKalmanFinding' or InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or - InDetFlags.primaryVertexSetup() == 'IterativeFinding'): + InDetFlags.primaryVertexSetup() == 'IterativeFinding' or + InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding' ): from TrkVertexFitters.TrkVertexFittersConf import Trk__SequentialVertexSmoother InDetVertexSmoother = Trk__SequentialVertexSmoother(name = "InDetSequentialVertexSmoother") ToolSvc += InDetVertexSmoother @@ -1408,7 +1449,9 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o XAODConverter = InDetVxEdmCnv ) - elif InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or InDetFlags.primaryVertexSetup() == 'IterativeFinding': + elif (InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or + InDetFlags.primaryVertexSetup() == 'IterativeFinding' or + InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding') : # # --- load configured adaptive vertex fitter # @@ -1451,7 +1494,8 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o if (not (InDetFlags.primaryVertexSetup() == 'IterativeFinding') and not (InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding') and - not (InDetFlags.primaryVertexSetup() == 'DefaultVKalVrtFinding')): + not (InDetFlags.primaryVertexSetup() == 'DefaultVKalVrtFinding') and + not (InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding' ) ): # # --- load primary vertex finder tool # @@ -1466,6 +1510,21 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o useBeamConstraint = InDetFlags.useBeamConstraint(), InternalEdmFactory= InDetVxEdmCnv) + elif (InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding') : + # + # --- load Medical Imaging seeded multi vertex finder + # + from InDetPriVxFinderTool.InDetPriVxFinderToolConf import InDet__InDetMultiPriVxFinderTool + InDetPriVxFinderTool = InDet__InDetMultiPriVxFinderTool( name = "InDetMedImgMultiPriVxFinderTool", + VertexFitterTool = InDetVxFitterTool, + TrackSelector = InDetTrackSelectorTool, + SeedFinder = InDetVtxSeedFinder, + ImpactPoint3dEstimator = InDetImpactPoint3dEstimator, + useBeamConstraint = InDetFlags.useBeamConstraint(), + significanceCutSeeding = 12, + maxVertices = 200, + InternalEdmFactory = InDetVxEdmCnv) + elif InDetFlags.primaryVertexSetup() == 'IterativeFinding': # # --- load adaptive primary vertex finder @@ -1481,7 +1540,10 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o significanceCutSeeding = 12, maximumChi2cutForSeeding = 49, maxVertices = 200, - InternalEdmFactory = InDetVxEdmCnv) + InternalEdmFactory = InDetVxEdmCnv, + doMaxTracksCut = InDetPrimaryVertexingCuts.doMaxTracksCut(), + MaxTracks = InDetPrimaryVertexingCuts.MaxTracks() + ) elif InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding': # @@ -1500,7 +1562,7 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o elif InDetFlags.primaryVertexSetup() == 'DefaultVKalVrtFinding': # # --- load vkal vertex finder tool - # + # from InDetVKalPriVxFinderTool.InDetVKalPriVxFinderTool import InDet__InDetVKalPriVxFinderTool InDetPriVxFinderTool = InDet__InDetVKalPriVxFinderTool(name = "InDetVKalPriVxFinder", TrackSummaryTool = InDetTrackSummaryTool, diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py index d3376f51befbb84ffba89d4391b534164a3ba477..ac12f82c1723f287b47b8cdc84cef67440b4c26d 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py @@ -1,3 +1,4 @@ + # -------------------------------------------- # # --- produce tracking ntuple @@ -303,52 +304,53 @@ if InDetFlags.doNtupleCreation(): # -------------------------------------------- if InDetFlags.doStandardPlots(): if len(TrackCollectionKeys) > 0: + if not InDetFlags.doDBM(): # # -- track selections # # for standard good quality cuts - from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool - InDetTrackSelectorToolGood = InDet__InDetDetailedTrackSelectorTool(name = "InDetDetailedTrackSelectorToolGood", - pTMin = 0, - d0MaxPreselection = 10, - IPd0Max = 2, - IPz0Max = 10000, - etaMax = 2.5, - nHitSi = 7, - nHitBLayer = 0, - nHitPix = 0, - nHitTrtHighEFractionMax = 1, - nHitTrtHighEFractionWithOutliersMax = 1, - useTrackSummaryInfo = True, - InDetTestBLayerTool = InDetRecTestBLayerTool, - TrackSummaryTool = InDetTrackSummaryTool, - Extrapolator = InDetExtrapolator, - TrtMaxEtaAcceptance = 1.9) - - ToolSvc+=InDetTrackSelectorToolGood - if (InDetFlags.doPrintConfigurables()): - print InDetTrackSelectorToolGood + from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool + InDetTrackSelectorToolGood = InDet__InDetDetailedTrackSelectorTool(name = "InDetDetailedTrackSelectorToolGood", + pTMin = 0, + d0MaxPreselection = 10, + IPd0Max = 2, + IPz0Max = 10000, + etaMax = 2.5, + nHitSi = 7, + nHitBLayer = 0, + nHitPix = 0, + nHitTrtHighEFractionMax = 1, + nHitTrtHighEFractionWithOutliersMax = 1, + useTrackSummaryInfo = True, + InDetTestBLayerTool = InDetRecTestBLayerTool, + TrackSummaryTool = InDetTrackSummaryTool, + Extrapolator = InDetExtrapolator, + TrtMaxEtaAcceptance = 1.9) + + ToolSvc+=InDetTrackSelectorToolGood + if (InDetFlags.doPrintConfigurables()): + print InDetTrackSelectorToolGood # for track selection as done by b-tagging group - InDetTrackSelectorToolBtag = InDet__InDetDetailedTrackSelectorTool(name = "InDetDetailedTrackSelectorToolBtag", - pTMin = 0, - IPd0Max = 1, - d0MaxPreselection = 10, - IPz0Max = 40000, - etaMax = 2.5, - nHitBLayer = 1, - nHitPix = 2, - nHitSi = 7, - nHitTrtHighEFractionMax = 1, - nHitTrtHighEFractionWithOutliersMax = 1, - # -- do not give tool ! InDetTestBLayerTool = InDetRecTestBLayerTool, - TrackSummaryTool = InDetTrackSummaryTool, - Extrapolator = InDetExtrapolator, - TrtMaxEtaAcceptance = 1.9) - - ToolSvc+=InDetTrackSelectorToolBtag - if (InDetFlags.doPrintConfigurables()): - print InDetTrackSelectorToolBtag + InDetTrackSelectorToolBtag = InDet__InDetDetailedTrackSelectorTool(name = "InDetDetailedTrackSelectorToolBtag", + pTMin = 0, + IPd0Max = 1, + d0MaxPreselection = 10, + IPz0Max = 40000, + etaMax = 2.5, + nHitBLayer = 1, + nHitPix = 2, + nHitSi = 7, + nHitTrtHighEFractionMax = 1, + nHitTrtHighEFractionWithOutliersMax = 1, + # -- do not give tool ! InDetTestBLayerTool = InDetRecTestBLayerTool, + TrackSummaryTool = InDetTrackSummaryTool, + Extrapolator = InDetExtrapolator, + TrtMaxEtaAcceptance = 1.9) + + ToolSvc+=InDetTrackSelectorToolBtag + if (InDetFlags.doPrintConfigurables()): + print InDetTrackSelectorToolBtag # --- add an AthenaMonManager algorithm to the list of algorithms to be ran from AthenaMonitoring.AthenaMonitoringConf import AthenaMonManager @@ -398,42 +400,43 @@ if InDetFlags.doStandardPlots(): InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceAll ] # selected tracks passing good quality cuts - InDetStandardPerformanceGood = InDetStandardPerformance (name = "InDetStandardPerformanceGood", - tracksName = InDetKeys.UnslimmedTracks(), - tracksTruthName = InDetKeys.UnslimmedTracksTruth(), - SummaryTool = InDetTrackSummaryToolSharedHits, - HoleSearch = InDetHoleSearchTool, - useTrackSelection = True, - TrackSelectorTool = InDetTrackSelectorToolGood, - HistDirectoryName = "SelectedGoodTracks", - TruthToTrackTool = TruthToTrackTool, - doUpgrade = InDetFlags.doSLHC(), - DoTruth = InDetFlags.doTruth()) + if not InDetFlags.doDBM(): + InDetStandardPerformanceGood = InDetStandardPerformance (name = "InDetStandardPerformanceGood", + tracksName = InDetKeys.UnslimmedTracks(), + tracksTruthName = InDetKeys.UnslimmedTracksTruth(), + SummaryTool = InDetTrackSummaryToolSharedHits, + HoleSearch = InDetHoleSearchTool, + useTrackSelection = True, + TrackSelectorTool = InDetTrackSelectorToolGood, + HistDirectoryName = "SelectedGoodTracks", + TruthToTrackTool = TruthToTrackTool, + doUpgrade = InDetFlags.doSLHC(), + DoTruth = InDetFlags.doTruth()) - ToolSvc += InDetStandardPerformanceGood - if (InDetFlags.doPrintConfigurables()): - print InDetStandardPerformanceGood + ToolSvc += InDetStandardPerformanceGood + if (InDetFlags.doPrintConfigurables()): + print InDetStandardPerformanceGood - InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceGood ] + InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceGood ] # selected tracks passing b-tagging cuts - InDetStandardPerformanceBtag = InDetStandardPerformance (name = "InDetStandardPerformanceBtag", - tracksName = InDetKeys.UnslimmedTracks(), - tracksTruthName = InDetKeys.UnslimmedTracksTruth(), - SummaryTool = InDetTrackSummaryToolSharedHits, - HoleSearch = InDetHoleSearchTool, - useTrackSelection = True, - TrackSelectorTool = InDetTrackSelectorToolBtag, - HistDirectoryName = "SelectedBtagTracks", - TruthToTrackTool = TruthToTrackTool, - doUpgrade = InDetFlags.doSLHC(), - DoTruth = InDetFlags.doTruth()) + InDetStandardPerformanceBtag = InDetStandardPerformance (name = "InDetStandardPerformanceBtag", + tracksName = InDetKeys.UnslimmedTracks(), + tracksTruthName = InDetKeys.UnslimmedTracksTruth(), + SummaryTool = InDetTrackSummaryToolSharedHits, + HoleSearch = InDetHoleSearchTool, + useTrackSelection = True, + TrackSelectorTool = InDetTrackSelectorToolBtag, + HistDirectoryName = "SelectedBtagTracks", + TruthToTrackTool = TruthToTrackTool, + doUpgrade = InDetFlags.doSLHC(), + DoTruth = InDetFlags.doTruth()) - ToolSvc += InDetStandardPerformanceBtag - if (InDetFlags.doPrintConfigurables()): - print InDetStandardPerformanceBtag + ToolSvc += InDetStandardPerformanceBtag + if (InDetFlags.doPrintConfigurables()): + print InDetStandardPerformanceBtag - InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceBtag ] + InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceBtag ] # selected Good IPatRec tracks if InDetFlags.doiPatRec(): diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py index e8a054f344da8938dc8dbe720e2bfac6cc4ec085..3d96f615a8f137bd73c6802282c3b744a1ddea3f 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py @@ -99,7 +99,9 @@ if InDetFlags.doVertexFindingForMonitoring(): maximumChi2cutForSeeding = 49, maxVertices = 200, createSplitVertices = False, - InternalEdmFactory = InDetVxEdmCnv) + InternalEdmFactory = InDetVxEdmCnv, + doMaxTracksCut = InDetPrimaryVertexingCuts.doMaxTracksCut(), + MaxTracks = InDetPrimaryVertexingCuts.MaxTracks() ) ToolSvc += InDetPriVxFinderToolNoBeamConstraint if (InDetFlags.doPrintConfigurables()): print InDetPriVxFinderToolNoBeamConstraint @@ -132,7 +134,9 @@ if InDetFlags.doSplitVertexFindingForMonitoring(): maximumChi2cutForSeeding = 49, maxVertices = 25, createSplitVertices = True, - InternalEdmFactory = InDetVxEdmCnv) + InternalEdmFactory = InDetVxEdmCnv, + doMaxTracksCut = InDetPrimaryVertexingCuts.doMaxTracksCut(), + MaxTracks = InDetPrimaryVertexingCuts.MaxTracks()) ToolSvc += InDetPriVxFinderToolSplit if (InDetFlags.doPrintConfigurables()): print InDetPriVxFinderToolSplit @@ -471,3 +475,18 @@ if InDetFlags.doParticleCreation(): if InDetFlags.doPrintConfigurables(): print InDetVxLinkSetter + +if rec.doPhysicsValidationAugmentation() : + try: + import InDetPhysValMonitoring.InDetPhysValDecoration + InDetPhysValMonitoring.InDetPhysValDecoration.addDecoratorIfNeeded() + except ImportError: + from AthenaCommon.Logging import logging + log = logging.getLogger('InDetRecExample/InDetRecPostProcessing.py' ) + log.info('Package InDetPhysValMonitoring.InDetPhysValDecoration is missing.'\ + ' So, will not run the decoration. Module should become available in future'\ + ' versions of InDetPhysValMonitoring') + import sys + sys.exit(1) + pass + diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py index 7cc7e518261309997be6fa0c10a1dec1126808fc..35b095db4a3806852bb8fa7b69a3082e2421a309 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py @@ -1,3 +1,4 @@ + # ------------------------------------------------------------ # # ----------- Data-Preparation stage @@ -231,6 +232,9 @@ if InDetFlags.doSpacePointFormation(): ProcessPixels = DetFlags.haveRIO.pixel_on(), ProcessSCTs = DetFlags.haveRIO.SCT_on(), ProcessOverlaps = DetFlags.haveRIO.SCT_on()) + if InDetFlags.doDBM(): + InDetSiTrackerSpacePointFinder.OverlapLimitEtaMax = 5.0 + InDetSiTrackerSpacePointFinder.OverlapLimitEtaMin = 0 if InDetFlags.doCosmics(): InDetSiTrackerSpacePointFinder.ProcessOverlaps = False diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py index 06ef06912009cec0c46970d2008f85e1c5a5161a..239bb27d0275988d1175edbbf4090af2169c29bb 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py @@ -1,3 +1,4 @@ + #-------------------------------------------------------------- # # @@ -90,6 +91,10 @@ if doEdmMonitor: topSequence += InDetEdmMonitor if (InDetFlags.doPrintConfigurables()): print InDetEdmMonitor +## DBM TruthLinks +if InDetFlags.doDBM() and InDetFlags.doTruth(): + from AthenaCommon.Resilience import protectedInclude + protectedInclude( "McParticleAlgs/TruthParticleBuilder_jobOptions_DBM.py" ) #-------------------------------------------------------------- # Load Inner Detector reconstruction @@ -189,17 +194,30 @@ if doWriteESD or doWriteAOD or ('doCopyRDO' in dir() and doCopyRDO): ServiceMgr.AthenaSealSvc.CheckDictionary = True # --- commit interval (test) ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10 - + +# MC truth information + if doWriteESD or doWriteAOD: + if InDetFlags.doTruth(): + truthList = [ 'xAOD::TruthEventContainer#TruthEvents', + 'xAOD::TruthEventAuxContainer#TruthEventsAux.', + 'xAOD::TruthPileupEventContainer#TruthPileupEvents', + 'xAOD::TruthPileupEventAuxContainer#TruthPileupEventsAux.', + 'xAOD::TruthParticleContainer#TruthParticles', + 'xAOD::TruthParticleAuxContainer#TruthParticlesAux.', + 'xAOD::TruthVertexContainer#TruthVertices', + 'xAOD::TruthVertexAuxContainer#TruthVerticesAux.', + 'PileUpEventInfo#OverlayEvent' ] + if doWriteESD: # --- create stream StreamESD = AthenaPoolOutputStream ( "StreamESD", InDetKeys.OutputESDFileName(),asAlg=True) - # --- save MC collection if truth turned on + # --- save MC collections if truth turned on if InDetFlags.doTruth(): - StreamESD.ItemList += ["McEventCollection#*"] - StreamESD.ItemList += [ "PileUpEventInfo#OverlayEvent" ] + StreamESD.ItemList += truthList # ---- load list of objects include ( "InDetRecExample/WriteInDetESD.py" ) StreamESD.ItemList += InDetESDList + StreamESD.ItemList += [ 'xAOD::EventInfo#EventInfo' , 'xAOD::EventAuxInfo#EventInfoAux.' ] # --- add trigger to IDRE standalone ESD StreamESD.ItemList += [ "TrigDec::TrigDecision#TrigDecision" ] StreamESD.ItemList += [ "HLT::HLTResult#HLTResult_L2" ] @@ -207,18 +225,24 @@ if doWriteESD or doWriteAOD or ('doCopyRDO' in dir() and doCopyRDO): StreamESD.ForceRead = True # otherwise unread stuff is not copied if doWriteAOD: - # --- create stream - StreamAOD = AthenaPoolOutputStream ( "StreamAOD", InDetKeys.OutputAODFileName()) - # --- save MC collection if truth turned on + from OutputStreamAthenaPool.MultipleStreamManager import MSMgr + # --- create *augmented* stream; this makes ROOT happy + StreamAOD_Augmented = MSMgr.NewPoolRootStream ( "StreamAOD", InDetKeys.OutputAODFileName() ) + # --- here is the old, backward-compatible event stream + StreamAOD = StreamAOD_Augmented.GetEventStream() + # --- save MC collections if truth turned on if InDetFlags.doTruth(): - StreamAOD.ItemList += ["McEventCollection#*"] - StreamAOD.ItemList += [ "PileUpEventInfo#OverlayEvent" ] + StreamAOD.ItemList += truthList + # --- load list of objects include ( "InDetRecExample/WriteInDetAOD.py" ) + StreamAOD.ItemList += [ 'xAOD::EventInfo#EventInfo' , 'xAOD::EventAuxInfo#EventInfoAux.' ] # --- add trigger to IDRE standalone AOD StreamAOD.ItemList += [ "TrigDec::TrigDecision#TrigDecision" ] StreamAOD.ItemList += [ "HLT::HLTResult#HLTResult_L2" ] StreamAOD.ItemList += [ "HLT::HLTResult#HLTResult_EF" ] + if InDetFlags.doDBM(): + topSequence.StreamESD.ItemList+=["TrackCollection#SiSPSeededTracks"] StreamAOD.ForceRead = True # otherwise unread stuff is not copied if 'doCopyRDO' in dir() and doCopyRDO: diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py index 701def88687e8f746fb238ee65ad84716102e54a..7341f7bbd8f73c006fecbc0ce60ad9316c8200d7 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py @@ -1,3 +1,4 @@ + # +++++++++++++++++++ beginning of InDetRec_jobOptions.py # jobOptions Fragment for ID software # ----------------------------------- @@ -68,7 +69,9 @@ else: if (not 'InDetNewTrackingCuts' in dir()): print "InDetRec_jobOptions: InDetNewTrackingCuts not set before - import them now" from InDetRecExample.ConfiguredNewTrackingCuts import ConfiguredNewTrackingCuts - if InDetFlags.doVtxLumi(): + if InDetFlags.doDBM(): + InDetNewTrackingCuts = ConfiguredNewTrackingCuts("DBM") + elif InDetFlags.doVtxLumi(): InDetNewTrackingCuts = ConfiguredNewTrackingCuts("VtxLumi") elif InDetFlags.doCosmics(): InDetNewTrackingCuts = ConfiguredNewTrackingCuts("Cosmics") @@ -156,9 +159,11 @@ else: # ------------------------------------------------------------ # --- silicon include ("InDetRecExample/InDetRecPreProcessingSilicon.py") - include ("InDetRecExample/ConfiguredInDetPreProcessingTRT.py") + # --- TRT, no drift information if cosmics, do not use extrenal phase in any case - InDetPreProcessingTRT = ConfiguredInDetPreProcessingTRT(not InDetFlags.doTRTPhaseCalculation() or jobproperties.Beam.beamType()=="collisions",False) + if not InDetFlags.doDBM(): + include ("InDetRecExample/ConfiguredInDetPreProcessingTRT.py") + InDetPreProcessingTRT = ConfiguredInDetPreProcessingTRT(not InDetFlags.doTRTPhaseCalculation() or jobproperties.Beam.beamType()=="collisions",False) # ------------------------------------------------------------ # diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py b/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py index c3907bb6a136d7e699fef8954722f2aee7faec33..3581a078871d49826ba37f77b9ce01a3ffa117ba 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py @@ -2,12 +2,9 @@ # control input #-------------------------------------------------------------- # --- specify input type -if not 'readESD' in dir(): - readESD = True -readAOD = not readESD - -# --- run on the 13.0.30.3 reference ESD or AOD -read13Reference = False +if not 'readAOD' in dir(): + readAOD = True +readESD = not readAOD #-------------------------------------------------------------- # Event related parameters @@ -17,15 +14,9 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags if readESD: athenaCommonFlags.FilesInput = [ "ESD.pool.root" ] - if read13Reference: - # 13.0.30.3 reference ESD with DetDescrVersion = "ATLAS-CSC-01-02-00" - athenaCommonFlags.FilesInput = [ "/afs/cern.ch/atlas/maxidisk/d33/referencefiles/T1_5200.13.0.30.3.ESD.017284._00001.pool.root" ] elif readAOD: athenaCommonFlags.FilesInput = [ "AOD.pool.root" ] - if read13Reference: - # 13.0.30.3 reference AOD with DetDescrVersion = "ATLAS-CSC-01-02-00" - athenaCommonFlags.FilesInput = [ "/afs/cern.ch/atlas/maxidisk/d33/referencefiles/T1_5200.13.0.30.3.AOD.017284._00001.pool.root" ] import AthenaPython.ConfigLib as apcl cfg = apcl.AutoCfg(name = 'InDetRecExampleAutoConfig', input_files=athenaCommonFlags.FilesInput()) @@ -185,7 +176,12 @@ InDetFlags.doPrintConfigurables = True from InDetRecExample.InDetKeys import InDetKeys if InDetFlags.doVertexFinding() and readAOD: InDetKeys.Tracks = InDetKeys.TrackParticles() - print "InDetKeys.Tracks = "+InDetKeys.Tracks() + +# uncomment if you don't want to overwrite the original fits (e.g. for comparison) +# this would also require enabling "pass-through" output mode (see bottom of this file) +# or else manually adding the input collection to the output stream +#if InDetFlags.doVertexFinding(): +# InDetKeys.xAODVertexContainer = "RefitPrimaryVertices" if readESD and not redoPatternRecoAndTracking: InDetKeys.UnslimmedTracks = 'Tracks' @@ -209,6 +205,9 @@ InDetKeys.print_JobProperties() InDetFlags.doStatistics = doInDetRecStatistics TrackCollectionKeys = [InDetKeys.Tracks()] TrackCollectionTruthKeys = [InDetKeys.TracksTruth()] + +# Uncomment to use medical image seeding +# InDetFlags.primaryVertexSetup = "MedImgMultiFinding" #-------------------------------------------------------------- # load master joboptions file @@ -216,6 +215,9 @@ TrackCollectionTruthKeys = [InDetKeys.TracksTruth()] include("InDetRecExample/InDetRec_all.py") -if doWriteESD: StreamESD.ForceRead = True - -if doWriteAOD: StreamAOD.ForceRead = True +# Set to True if you want to write out all input data ("pass-through" mode) +if doWriteESD: + StreamESD.TakeItemsFromInput = False + +if doWriteAOD: + StreamAOD.TakeItemsFromInput = False diff --git a/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RAW.py b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RAW.py new file mode 100644 index 0000000000000000000000000000000000000000..13f330afeaf874cafb6e2c65cb1f10128205fee9 --- /dev/null +++ b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RAW.py @@ -0,0 +1,258 @@ +#-------------------------------------------------------------- +# Event related parameters and input files +#-------------------------------------------------------------- + +# --- read BS +doReadBS = True +doCopyRDO = False + +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags + +if not doReadBS: + athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/digiOUT/OUTdigi1247_2.pool.root"] + # top no pileup (default) +# athenaCommonFlags.FilesInput = ["root://eosatlas///eos/atlas/atlasgroupdisk/perf-idtracking/dq2/rucio/mc12_valid/ac/91/RDO.01385812._000001.pool.root.1"] + # H-gamgam, 20 pileup + # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlasgroupdisk/perf-egamma/dq2/mc11_valid/RDO/e850_s1310_s1300_d576/mc11_valid.106384.PythiaH120gamgam.digit.RDO.e850_s1310_s1300_d576_tid512888_00/RDO.512888._000001.pool.root.1"] + # H-gamgam, 0 pileup (filename ?) + # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlasgroupdisk/perf-egamma/dq2/mc11_valid/RDO/e850_s1310_s1300_d578/mc11_valid.106384.PythiaH120gamgam.digit.RDO.e850_s1310_s1300_d578_tid512902_00/RDO.512902._000001.pool.root.1"] + # electrons 5 GeV + # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/rtt/mc10_7TeV.105128.singlepart_e_pt5.digit.RDO.e605_s933_s946_d369/RDO.219312._000024.pool.root.2"] + # pions 1 GeV + # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/rtt/mc10_7TeV.105130.singlepart_singlepi_pt1.digit.RDO.e605_s933_s946_d369/RDO.197118._000005.pool.root.1"] + +if doReadBS: + #athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/InDetRecExample/data10_7TeV.00154817.physics_MinBias.merge.RAW/data10_7TeV.00154817.physics_MinBias.merge.RAW._lb0100._0001.1"] + athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/data15_cos.00253010.physics_Main.merge.RAW._lb0878._SFO-ALL._0001.1"] + #athenaCommonFlags.FilesInput = ["/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0002._SFO-ALL._0001.1", "/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0003._SFO-ALL._0001.1", "/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0004._SFO-ALL._0001.1", "/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0005._SFO-ALL._0001.1"] + +#from AthenaCommon.GlobalFlags import jobproperties +#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02' +#from IOVDbSvc.CondDB import conddb +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') +#conddb.setGlobalTag(globalflags.ConditionsTag()) +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') + + + +import AthenaPython.ConfigLib as apcl +cfg = apcl.AutoCfg(name = 'InDetRecExampleAutoConfig', input_files=athenaCommonFlags.FilesInput()) +cfg.configure_job() + +#from AthenaCommon.GlobalFlags import jobproperties +#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02' +#from IOVDbSvc.CondDB import conddb +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') +#conddb.setGlobalTag(globalflags.ConditionsTag()) +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterial','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') + + + +if doReadBS: + from AthenaCommon.GlobalFlags import globalflags + if len(globalflags.ConditionsTag())!=0: + from IOVDbSvc.CondDB import conddb + conddb.setGlobalTag(globalflags.ConditionsTag()) + conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') + +#include("RecExCond/AllDet_detDescr.py") + +import MagFieldServices.SetupField + +theApp.EvtMax = -1 +#theApp.EvtMax = 20 + +#-------------------------------------------------------------- +# Control +#-------------------------------------------------------------- + +# --- Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) +OutputLevel = INFO +# --- produce an atlantis data file +doJiveXML = False +# --- run the Virtual Point 1 event visualisation +doVP1 = False +# --- controls what is written out. ESD includes AOD, so it's normally enough +doWriteESD = True +doWriteAOD = False +# --- do auditors ? +doAuditors = True + +import os +if os.environ['CMTCONFIG'].endswith('-dbg'): + # --- do EDM monitor (debug mode only) + doEdmMonitor = True + # --- write out a short message upon entering or leaving each algorithm + doNameAuditor = True +else: + doEdmMonitor = False + doNameAuditor = False + +#-------------------------------------------------------------- +# Additional Detector Setup +#-------------------------------------------------------------- + +from RecExConfig.RecFlags import rec +rec.Commissioning=False + +# --- for heavy ion running +#rec.doHeavyIon = True + +from AthenaCommon.DetFlags import DetFlags +# --- switch on InnerDetector +DetFlags.ID_setOn() +#DetFlags.makeRIO.pixel_setOff() +DetFlags.makeRIO.SCT_setOff() +DetFlags.makeRIO.TRT_setOff() + +# --- and switch off all the rest +DetFlags.Calo_setOff() +DetFlags.Muon_setOff() + +# ---- switch parts of ID off/on as follows (always use both lines) +#DetFlags.pixel_setOff() +#DetFlags.detdescr.pixel_setOn() +DetFlags.SCT_setOff() +DetFlags.detdescr.SCT_setOn() +DetFlags.TRT_setOff() +DetFlags.detdescr.TRT_setOn() + +# --- switch off DCS +#DetFlags.dcs.pixel_setOff() +DetFlags.dcs.SCT_setOff() +DetFlags.dcs.TRT_setOff() + +# --- printout +#DetFlags.Print() + +# --- output level +#OutputLevel = DEBUG + +#-------------------------------------------------------------- +# Load InDet configuration +#-------------------------------------------------------------- + +from AthenaCommon.GlobalFlags import globalflags + +# --- setup InDetJobProperties +from InDetRecExample.InDetJobProperties import InDetFlags +#InDetFlags.doTruth = (globalflags.DataSource == 'geant4' and globalflags.InputFormat() == 'pool') +InDetFlags.doTruth = False +InDetFlags.doDBM = True + +# --- special setup for Beate +# InDetFlags.doVtxLumi = True + +# --- enable xKalman and iPatRec +# InDetFlags.doxKalman = True +# InDetFlags.doiPatRec = True + +# --- uncomment to change the default of one of the following options: +#InDetFlags.doNewTracking = False +InDetFlags.doLowPt = False +#InDetFlags.doBeamGas = True +#InDetFlags.doBeamHalo = True +#InDetFlags.doBackTracking = False +#InDetFlags.doTRTStandalone = False +#InDetFlags.doLowBetaFinder = False +InDetFlags.doTRTPhaseCalculation = False + +#InDetFlags.cutLevel.set_Value_and_Lock (10) + +InDetFlags.cutLevel = 1 # test for TRTonly in PU +#InDetFlags.priVtxCutLevel = 2 # test for PU + +# --- enable brem recovery +# InDetFlags.doBremRecovery = True + +# --- calo seeding does not work standalone +# InDetFlags.doCaloSeededBrem = False + +# --- Turn off track slimming +InDetFlags.doSlimming = False + +InDetFlags.doIBL = True +#InDetFlags.doHighPileup = True +#InDetFlags.doSLHC = True + +# --- possibility to run tracking on subdetectors separately (and independent from each other) +#InDetFlags.doTrackSegmentsPixel = True +#InDetFlags.doTrackSegmentsSCT = True +#InDetFlags.doTrackSegmentsTRT = True + +# --- possibility to change the trackfitter +#InDetFlags.trackFitterType = 'KalmanFitter' + +# --- activate monitorings +InDetFlags.doMonitoringGlobal = False +InDetFlags.doMonitoringPrimaryVertexingEnhanced = False +InDetFlags.doMonitoringPixel = False +InDetFlags.doMonitoringSCT = False +InDetFlags.doMonitoringTRT = False +InDetFlags.doMonitoringAlignment = False + +# --- activate (memory/cpu) monitoring +#InDetFlags.doPerfMon = True +# --- activate creation of standard plots +InDetFlags.doStandardPlots = True +# --- activate physics validation monitoring +InDetFlags.doPhysValMon = False +# --- active storegate delection +#InDetFlags.doSGDeletion = True + +# --- produce various ntuples (all in one root file) +InDetFlags.doTrkNtuple = False +InDetFlags.doPixelTrkNtuple = False +#InDetFlags.doSctTrkNtuple = True +#InDetFlags.doTrtTrkNtuple = True +InDetFlags.doPixelClusterNtuple = False +#InDetFlags.doSctClusterNtuple = True +#InDetFlags.doTrtDriftCircleNtuple = True +#InDetFlags.doVtxNtuple = True +#InDetFlags.doConvVtxNtuple = True +#InDetFlags.doV0VtxNtuple = True + +#InDetFlags.doMinBias = True + +# activate the print InDetXYZAlgorithm statements +InDetFlags.doPrintConfigurables = True + +#DBM changes +InDetFlags.doPixelClusterSplitting.set_Value_and_Lock(False) +InDetFlags.doNewTracking.set_Value_and_Lock(True) +InDetFlags.useBroadPixClusterErrors.set_Value_and_Lock(True) +InDetFlags.selectSCTIntimeHits = False +InDetFlags.doForwardTracks = False +InDetFlags.doVertexFinding = True +InDetFlags.doSCT_PRDFormation = False +InDetFlags.doTRT_PRDFormation = False +InDetFlags.doHolesOnTrack = False +InDetFlags.doTIDE_Ambi = False +InDetFlags.useBeamConstraint = False +InDetFlags.doCaloSeededBrem = False +InDetFlags.doVertexFindingForMonitoring = False +InDetFlags.doSplitVertexFindingForMonitoring = False +InDetFlags.doParticleCreation = False +#InDetFlags.doInnerDetectorCommissioning.set_Value_and_Lock(True); +#InDetFlags.doFatras = True + +# IMPORTANT NOTE: initialization of the flags and locking them is done in InDetRec_jobOptions.py! +# This way RecExCommon just needs to import the properties without doing anything else! +# DO NOT SET JOBPROPERTIES AFTER THIS LINE! The change will be ignored! + +#-------------------------------------------------------------- +# load master joboptions file +#-------------------------------------------------------------- + +include("InDetRecExample/InDetRec_all.py") +include("RecExCommon/BSRead_config.py") +include("IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py") +include("PixelCabling/SelectPixelMap.py") + +# --- dump MC truth into logfile +#from TruthExamples.TruthExamplesConf import DumpMC +#topSequence += DumpMC(McEventKey = "TruthEvent") diff --git a/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RDO.py b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RDO.py new file mode 100644 index 0000000000000000000000000000000000000000..d2cc7f3881fed0d76a1fcc8e5d80e4226e45b761 --- /dev/null +++ b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RDO.py @@ -0,0 +1,244 @@ +#-------------------------------------------------------------- +# Event related parameters and input files +#-------------------------------------------------------------- + +# --- read BS +doReadBS = False +doCopyRDO = True + +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags + +if not doReadBS: + athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/digiOUT/OUTdigi1247_2.pool.root"] +# athenaCommonFlags.FilesInput = ["/tmp/mdiamond/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r6221_tid05191880_00/RDO.05191880._000170.pool.root.1"] +# athenaCommonFlags.FilesInput = ["/tmp/mdiamond/RDO.05191880._000080.pool.root.1", "/tmp/mdiamond/RDO.05191880._000232.pool.root.1", "/tmp/mdiamond/RDO.05191880._000235.pool.root.1", "/tmp/mdiamond/RDO.05191880._000243.pool.root.1" ] +# athenaCommonFlags.FilesInput = ["/tmp/mdiamond/ns25/RDO.05191878._000042.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000110.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000121.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000141.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000022.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000140.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000148.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000189.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000156.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000012.pool.root.1","/tmp/mdiamond/ns25/RDO.05191878._000041.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000102.pool.root.1"] +# athenaCommonFlags.FilesInput = ["/tmp/mdiamond/ns25/RDO.05191878._000042.pool.root.1"] + +# athenaCommonFlags.FilesInput = ["/tmp/mdiamond/RDO.05191880._000080.pool.root.1"] + +if doReadBS: + #athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/InDetRecExample/data10_7TeV.00154817.physics_MinBias.merge.RAW/data10_7TeV.00154817.physics_MinBias.merge.RAW._lb0100._0001.1"] + athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/data15_cos.00253010.physics_Main.merge.RAW._lb0878._SFO-ALL._0001.1"] + +from AthenaCommon.GlobalFlags import jobproperties +#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02' +jobproperties.Global.ConditionsTag='OFLCOND-RUN12-SDR-25' +from IOVDbSvc.CondDB import conddb +conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') +conddb.setGlobalTag(globalflags.ConditionsTag()) +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') +conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') + + + +import AthenaPython.ConfigLib as apcl +cfg = apcl.AutoCfg(name = 'InDetRecExampleAutoConfig', input_files=athenaCommonFlags.FilesInput()) +cfg.configure_job() + +from AthenaCommon.GlobalFlags import jobproperties +#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02' +from IOVDbSvc.CondDB import conddb +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') +conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') +conddb.setGlobalTag(globalflags.ConditionsTag()) +conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02') +#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterial','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01') + +from IOVDbSvc.CondDB import conddb +if len(globalflags.ConditionsTag())!=0: + conddb.setGlobalTag(globalflags.ConditionsTag()) +import MagFieldServices.SetupField + + +#theApp.EvtMax = -1 +theApp.EvtMax = 10 + +#-------------------------------------------------------------- +# Control +#-------------------------------------------------------------- + +# --- Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) +OutputLevel = INFO +# --- produce an atlantis data file +doJiveXML = False +# --- run the Virtual Point 1 event visualisation +doVP1 = False +# --- controls what is written out. ESD includes AOD, so it's normally enough +doWriteESD = True +doWriteAOD = False +# --- do auditors ? +doAuditors = True + +import os +if os.environ['CMTCONFIG'].endswith('-dbg'): + # --- do EDM monitor (debug mode only) + doEdmMonitor = True + # --- write out a short message upon entering or leaving each algorithm + doNameAuditor = True +else: + doEdmMonitor = False + doNameAuditor = False + +#-------------------------------------------------------------- +# Additional Detector Setup +#-------------------------------------------------------------- + +from RecExConfig.RecFlags import rec +rec.Commissioning=False + +# --- for heavy ion running +#rec.doHeavyIon = True + +from AthenaCommon.DetFlags import DetFlags +# --- switch on InnerDetector +DetFlags.ID_setOn() +#DetFlags.makeRIO.pixel_setOff() +DetFlags.makeRIO.SCT_setOff() +DetFlags.makeRIO.TRT_setOff() + +# --- and switch off all the rest +DetFlags.Calo_setOff() +DetFlags.Muon_setOff() + +# ---- switch parts of ID off/on as follows (always use both lines) +#DetFlags.pixel_setOff() +#DetFlags.detdescr.pixel_setOn() +DetFlags.SCT_setOff() +DetFlags.detdescr.SCT_setOn() +DetFlags.TRT_setOff() +DetFlags.detdescr.TRT_setOn() + +# --- switch off DCS +#DetFlags.dcs.pixel_setOff() +DetFlags.dcs.SCT_setOff() +DetFlags.dcs.TRT_setOff() + +# --- printout +#DetFlags.Print() + +# --- output level +#OutputLevel = DEBUG + +#-------------------------------------------------------------- +# Load InDet configuration +#-------------------------------------------------------------- + +from AthenaCommon.GlobalFlags import globalflags + +# --- setup InDetJobProperties +from InDetRecExample.InDetJobProperties import InDetFlags +InDetFlags.doDBM = True +#InDetFlags.doTruth = (globalflags.DataSource == 'geant4' and globalflags.InputFormat() == 'pool') +InDetFlags.doTruth = True + +# --- special setup for Beate +# InDetFlags.doVtxLumi = True + +# --- enable xKalman and iPatRec +# InDetFlags.doxKalman = True +# InDetFlags.doiPatRec = True + +# --- uncomment to change the default of one of the following options: +#InDetFlags.doNewTracking = False +InDetFlags.doLowPt = False +#InDetFlags.doBeamGas = True +#InDetFlags.doBeamHalo = True +#InDetFlags.doBackTracking = False +#InDetFlags.doTRTStandalone = False +#InDetFlags.doLowBetaFinder = False +InDetFlags.doTRTPhaseCalculation = False + +#InDetFlags.cutLevel.set_Value_and_Lock (10) + +InDetFlags.cutLevel = 1 # test for TRTonly in PU +#InDetFlags.priVtxCutLevel = 2 # test for PU + +# --- enable brem recovery +# InDetFlags.doBremRecovery = True + +# --- calo seeding does not work standalone +# InDetFlags.doCaloSeededBrem = False + +# --- Turn off track slimming +InDetFlags.doSlimming = False + +InDetFlags.doIBL = True +#InDetFlags.doHighPileup = True +#InDetFlags.doSLHC = True + +# --- possibility to run tracking on subdetectors separately (and independent from each other) +#InDetFlags.doTrackSegmentsPixel = True +#InDetFlags.doTrackSegmentsSCT = True +#InDetFlags.doTrackSegmentsTRT = True + +# --- possibility to change the trackfitter +#InDetFlags.trackFitterType = 'KalmanFitter' + +# --- activate monitorings +InDetFlags.doMonitoringGlobal = False +InDetFlags.doMonitoringPrimaryVertexingEnhanced = False +InDetFlags.doMonitoringPixel = False +InDetFlags.doMonitoringSCT = False +InDetFlags.doMonitoringTRT = False +InDetFlags.doMonitoringAlignment = False + +# --- activate (memory/cpu) monitoring +#InDetFlags.doPerfMon = True +# --- activate creation of standard plots +InDetFlags.doStandardPlots = True +# --- activate physics validation monitoring +InDetFlags.doPhysValMon = False +# --- active storegate delection +#InDetFlags.doSGDeletion = True + +# --- produce various ntuples (all in one root file) +InDetFlags.doTrkNtuple = False +InDetFlags.doPixelTrkNtuple = False +#InDetFlags.doSctTrkNtuple = True +#InDetFlags.doTrtTrkNtuple = True +InDetFlags.doPixelClusterNtuple = False +#InDetFlags.doSctClusterNtuple = True +#InDetFlags.doTrtDriftCircleNtuple = True +#InDetFlags.doVtxNtuple = True +#InDetFlags.doConvVtxNtuple = True +#InDetFlags.doV0VtxNtuple = True + +#InDetFlags.doMinBias = True + +# activate the print InDetXYZAlgorithm statements +InDetFlags.doPrintConfigurables = True + +#DBM changes +InDetFlags.doPixelClusterSplitting.set_Value_and_Lock(False) +InDetFlags.doNewTracking.set_Value_and_Lock(True) +InDetFlags.useBroadPixClusterErrors.set_Value_and_Lock(True) +InDetFlags.selectSCTIntimeHits = False +InDetFlags.doForwardTracks = False +InDetFlags.doVertexFinding = True +InDetFlags.doSCT_PRDFormation = False +InDetFlags.doTRT_PRDFormation = False +InDetFlags.doHolesOnTrack = False +InDetFlags.doTIDE_Ambi = False +InDetFlags.useBeamConstraint = False +InDetFlags.doCaloSeededBrem = False +InDetFlags.doVertexFindingForMonitoring = False +InDetFlags.doSplitVertexFindingForMonitoring = False +InDetFlags.doParticleCreation = True + +#InDetFlags.doFatras = True + +# IMPORTANT NOTE: initialization of the flags and locking them is done in InDetRec_jobOptions.py! +# This way RecExCommon just needs to import the properties without doing anything else! +# DO NOT SET JOBPROPERTIES AFTER THIS LINE! The change will be ignored! + +#-------------------------------------------------------------- +# load master joboptions file +#-------------------------------------------------------------- + +include("InDetRecExample/InDetRec_all.py") + +# --- dump MC truth into logfile +#from TruthExamples.TruthExamplesConf import DumpMC +#topSequence += DumpMC(McEventKey = "TruthEvent")