Skip to content
Snippets Groups Projects

Further move bits from AnalysisConf to the DaVinci configurable

Merged Eduardo Rodrigues requested to merge erodrigu-analysisconf into master
All threads resolved!
@@ -16,7 +16,8 @@ from LHCbKernel.Configuration import *
from Configurables import GaudiSequencer
from Configurables import ( LHCbConfigurableUser, LHCbApp,
PhysConf, AnalysisConf,
DstConf, LumiAlgsConf, TurboConf )
DstConf, LumiAlgsConf, TurboConf, FlavourTaggingConf )
from Configurables import ToolSvc, DataOnDemandSvc
from LumiAlgs.LumiIntegratorConf import LumiIntegratorConf
import GaudiKernel.ProcessJobOptions
@@ -114,6 +115,7 @@ class DaVinci(LHCbConfigurableUser) :
LumiAlgsConf ,
LumiIntegratorConf,
TurboConf ,
FlavourTaggingConf,
LHCbApp ]
+1
__legacy_datatypes__ = [ "MC09", "2008", "2009", "2010", "2011", "2012", "2015", "2016", "2017", "2018", ]
@@ -355,15 +357,61 @@ class DaVinci(LHCbConfigurableUser) :
if ( (inputType != 'MDST' ) & (inputType != "MDF") & (inputType != "DIGI" )) :
physinit = PhysConf().initSequence() # PhysConf initSequence
# Analysis
AnalysisConf().RedoMCLinks = self.getProp("RedoMCLinks")
analysisinit = AnalysisConf().initSequence()
analysisinit = self.anaInitSequence()
initSeqs = [physinit,analysisinit]
return GaudiSequencer('DaVinciEventInitSeq',
Members = initSeqs,
IgnoreFilterPassed = True)
# LoKi service
#
# configure reconstruction to be redone
#
def anaInitSequence(self):
"""
Analysis init Sequence.
"""
# only one initialisiation do far
from Configurables import GaudiSequencer
init = GaudiSequencer("AnalysisInitSeq")
self.redoMCLinks(init)
return init
#
# Set MC
#
def redoMCLinks(self, init):
"""
Redo MC links.
"""
if (self.getProp("Simulation")):
redo = self.getProp("RedoMCLinks")
if (redo):
from Configurables import (GaudiSequencer, TESCheck,
EventNodeKiller, TrackAssociator)
mcKillSeq = GaudiSequencer(
"KillMCLinks"
) # The sequence killing the node of it exists
tescheck = TESCheck(
"DaVinciEvtCheck") # Check for presence of node ...
tescheck.Inputs = ["Link/Rec/Track/Best"] #
tescheck.Stop = False # But don't stop
tescheck.OutputLevel = 5 # don't print warnings
evtnodekiller = EventNodeKiller(
"DaVinciEvtNodeKiller") # kill nodes
evtnodekiller.Nodes = ["Link/Rec/Track"] # Kill that
mcKillSeq.Members = [
tescheck, evtnodekiller,
TrackAssociator()
]
mcLinkSeq = GaudiSequencer(
"RedoMCLinks") # The sequence redoing the links
mcLinkSeq.IgnoreFilterPassed = True # Run it always
mcLinkSeq.Members = [mcKillSeq, TrackAssociator()]
init.Members += [mcLinkSeq]
# LoKi service
def loki(self):
"""
Define the LoKi service.
@@ -371,6 +419,23 @@ class DaVinci(LHCbConfigurableUser) :
from Configurables import LoKiSvc
lokiService = LoKiSvc()
ApplicationMgr().ExtSvc += [lokiService]
#
# BTaggingTool configuration
#
def tagging(self):
# Just create an instance. Nothing to configure as of yet
ftConf = FlavourTaggingConf()
#
# Standard Particles
#
def standardParticles(self):
"""
define standard particles on DoD service
"""
import CommonParticles.StandardBasic
import CommonParticles.StandardIntermediate
################################################################################
# Lumi setup
@@ -432,8 +497,9 @@ class DaVinci(LHCbConfigurableUser) :
from Configurables import (ApplicationMgr,
AuditorSvc,
SequencerTimerTool)
from Configurables import TimingAuditor, SequencerTimerTool
ApplicationMgr().ExtSvc += [ 'ToolSvc', 'AuditorSvc' ]
ApplicationMgr().ExtSvc += [ 'AuditorSvc' ]
ApplicationMgr().AuditAlgorithms = True
AuditorSvc().Auditors += [ 'TimingAuditor' ]
SequencerTimerTool().OutputLevel = 4
@@ -445,7 +511,6 @@ class DaVinci(LHCbConfigurableUser) :
EventSelector().PrintFreq = printfreq
# Change the column size of Timing table
from Configurables import TimingAuditor, SequencerTimerTool
TimingAuditor().addTool(SequencerTimerTool,name="TIMER")
if not TimingAuditor().TIMER.isPropertySet("NameSize"):
TimingAuditor().TIMER.NameSize = 50
@@ -743,18 +808,22 @@ class DaVinci(LHCbConfigurableUser) :
verbosePrint = self.getProp("VerboseMessages")
from Configurables import LoKiSvc
LoKiSvc().Welcome = verbosePrint
from Configurables import DataOnDemandSvc
DataOnDemandSvc().Dump = verbosePrint
if not verbosePrint :
msgSvc = getConfigurable("MessageSvc")
msgSvc.setWarning += ['RFileCnv']
# Setup DataOnDemand, and make sure ToolSvc is done before hand
ApplicationMgr().ExtSvc += [ToolSvc(), DataOnDemandSvc()]
self._defineMonitors()
self.loki()
self._defineEvents()
self._defineInput()
self._rootFiles()
self._upgradeAction()
self.tagging()
self.standardParticles()
# Add main sequence to TopAlg
self._mainSequence ()
Loading