Skip to content
Snippets Groups Projects
Commit 0eecdf64 authored by Eduardo Rodrigues's avatar Eduardo Rodrigues Committed by Patrick Koppenburg
Browse files

Move remnant functionality in AnalysisConf to the DaVinci configurable

parent a356e0bd
No related branches found
No related tags found
1 merge request!1103Draft: Add AnalysisHelpers to DaVinci Stack
......@@ -15,7 +15,7 @@ High level configuration tools for DaVinci.
from LHCbKernel.Configuration import *
from Configurables import GaudiSequencer
from Configurables import ( LHCbConfigurableUser, LHCbApp,
PhysConf, AnalysisConf,
PhysConf,
DstConf, LumiAlgsConf, TurboConf, FlavourTaggingConf )
from Configurables import ToolSvc, DataOnDemandSvc
from LumiAlgs.LumiIntegratorConf import LumiIntegratorConf
......@@ -40,7 +40,7 @@ class DaVinci(LHCbConfigurableUser) :
"EvtMax" : -1 # Number of events to analyse
, "SkipEvents" : 0 # Number of events to skip at beginning for file
, "PrintFreq" : 1000 # The frequency at which to print event numbers
, "DataType" : '' # Data type, can be ['2008','2009','MC09','2010','2011','2012','2015','2016','2017','2018','Upgrade'] Forwarded to PhysConf, AnalysisConf, DstConf and LHCbApp. MUST be set.
, "DataType" : '' # Data type, can be ['2008','2009','MC09','2010','2011','2012','2015','2016','2017','2018','Upgrade'] Forwarded to PhysConf, DstConf and LHCbApp. MUST be set.
, "Simulation" : False # set to True to use SimCond. Forwarded to PhysConf
, "DDDBtag" : "" # Tag for DDDB. Default as set in DDDBConf for DataType
, "CondDBtag" : "" # Tag for CondDB. Default as set in DDDBConf for DataType
......@@ -79,7 +79,7 @@ class DaVinci(LHCbConfigurableUser) :
"EvtMax" : """ Number of events to analyse """
, "SkipEvents" : """ Number of events to skip at beginning for file """
, "PrintFreq" : """ The frequency at which to print event numbers """
, "DataType" : """ Data type, can be ['2008','2009','MC09','2010','2011','2012','2015','2016','2017','2018','Upgrade'] Forwarded to PhysConf, AnalysisConf, DstConf and LHCbApp """
, "DataType" : """ Data type, can be ['2008','2009','MC09','2010','2011','2012','2015','2016','2017','2018','Upgrade'] Forwarded to PhysConf, DstConf and LHCbApp """
, "Simulation" : """ set to True to use SimCond. Forwarded to PhysConf """
, "DDDBtag" : """ Tag for DDDB. Default as set in DDDBConf for DataType """
, "CondDBtag" : """ Tag for CondDB. Default as set in DDDBConf for DataType """
......@@ -110,7 +110,6 @@ class DaVinci(LHCbConfigurableUser) :
__used_configurables__ = [
PhysConf ,
AnalysisConf ,
DstConf ,
LumiAlgsConf ,
LumiIntegratorConf,
......@@ -295,7 +294,6 @@ class DaVinci(LHCbConfigurableUser) :
self.setOtherProps(LHCbApp(),["DataType","CondDBtag","DDDBtag",
"DQFLAGStag","Simulation","IgnoreDQFlags"])
self.setOtherProps(PhysConf(),["DataType","Simulation","InputType","Detectors"])
self.setOtherProps(AnalysisConf(),["DataType","Simulation","InputType","RootInTES"])
self.setOtherProps(DstConf(),["DataType","Turbo"])
if self.getProp("Turbo"):
......@@ -348,7 +346,7 @@ class DaVinci(LHCbConfigurableUser) :
return di
def _init(self):
from Configurables import (PhysConf,AnalysisConf)
from Configurables import PhysConf
inputType = self.getProp( "InputType" ).upper()
......@@ -380,6 +378,115 @@ class DaVinci(LHCbConfigurableUser) :
#
# Set MC
#
def configureMC(self):
"""
Define DaVinciAssociators. Do MC unpacking.
"""
from CaloKernel.ConfUtils import getAlgo
from Configurables import NeutralPP2MC, ChargedPP2MC
root_ = '/Event'
if self.getProp("InputType") == 'MDST' and self.getProp('RootInTES'):
root_ = self.getProp('RootInTES')
self.unpackMC(root_)
## offline neutral protoparticles
alg1 = getAlgo(
NeutralPP2MC, ## type
'NeutralPP2MC', ## base-name
'Offline', ## context
root_ + '/Relations/Rec/ProtoP/Neutrals', ## base-location
True) ## on-demand
## hlt neutral protoparticles
alg2 = getAlgo(
NeutralPP2MC, ## type
'NeutralPP2MC', ## base-name
'Hlt', ## context
root_ + '/Relations/Rec/ProtoP/Neutrals', ## base-location
True) ## on-demand
from Configurables import DataOnDemandSvc, ChargedPP2MC
if root_ != '/Event':
alg1.RootInTES = root_
ChargedPP2MC(RootInTES=root_)
dod = DataOnDemandSvc()
dod.AlgMap[root_ + '/Relations/Rec/ProtoP/Charged'] = ChargedPP2MC()
dod.AlgMap[root_ + '/Relations/Rec/ProtoP/Upstream'] = ChargedPP2MC()
#
# Unpack MC
#
def unpackMC(self, rootInTES):
"""
Do MC unpacking for objects under rootInTES
"""
import os
from Configurables import UnpackMCParticle, UnpackMCVertex
mcRoot = os.path.join(rootInTES, "MC")
log.info("Will unpack MC objects to {0}".format(mcRoot))
particlesOutput = os.path.join(mcRoot, "Particles")
verticesOutput = os.path.join(mcRoot, "Vertices")
dod = DataOnDemandSvc()
dod.NodeMap[mcRoot] = "DataObject"
dod.AlgMap[particlesOutput] = UnpackMCParticle(RootInTES=rootInTES)
dod.AlgMap[verticesOutput] = UnpackMCVertex(RootInTES=rootInTES)
## for uDST
if mcRoot != '/Event/MC':
## create the directory (if missing)
dod.NodeMap[rootInTES + '/pSim'] = 'DataObject'
from Configurables import Gaudi__DataLink as Link
for name, target, what in [
## process ``pMC'' and ``pSim'' variants of uDST coherently
('LINK:MC2Sim4Particles', rootInTES + '/pSim/MCParticles',
rootInTES + '/pMC/Particles'),
('LINK:MC2Sim4Vertices', rootInTES + '/pSim/MCVertices',
rootInTES + '/pMC/Vertices'),
# In case any algorithm has a hard-coded dependency on /Event/MC/...,
# creates links from the location under RootInTES to /Event/MC
('LINK:MCParticles', '/Event/MC/Particles',
rootInTES + '/MC/Particles'),
('LINK:MCVertices', '/Event/MC/Vertices',
rootInTES + '/MC/Vertices'),
]:
dod.AlgMap[target] = Link(
name, Target=target, What=what, OutputLevel=5)
log.debug(
'Set additional MC->SIM links %s -> %s ' % (what, target))
## some non-trivial action for non-trivial settings
from Configurables import GaudiSequencer
dod.AlgMap[particlesOutput] = GaudiSequencer(
"SEQ:MCParticles",
Members=[
dod.AlgMap[particlesOutput],
Link(
'LINK:MCParticles2MC',
Target=particlesOutput,
What='/Event/MC/Particles',
OutputLevel=5)
])
dod.AlgMap[verticesOutput] = GaudiSequencer(
"SEQ:MCVertices",
Members=[
dod.AlgMap[verticesOutput],
Link(
'LINK:MCVertices2MC',
Target=verticesOutput,
What='/Event/MC/Vertices',
OutputLevel=5)
])
def redoMCLinks(self, init):
"""
Redo MC links.
......@@ -821,6 +928,10 @@ class DaVinci(LHCbConfigurableUser) :
self._defineEvents()
self._defineInput()
self._rootFiles()
log.info("Applying Analysis configuration")
log.info(self)
if (self.getProp("Simulation")):
self.configureMC()
self._upgradeAction()
self.tagging()
self.standardParticles()
......
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