示例#1
0
    """ putype is expected to be a string ! """
    builder =  createMcAodBuilder(
        name = "McAodBuilder"+putype,
        outMcEvtCollection  = "GEN_AOD", # this is the input to the CnvTool
        outTruthParticles   = "SpclMC"+putype,
        )
    builder.CnvTool.SelectSignalType =  PileUpClassification.fromString(putype) # min bias only

    objKeyStore.addStreamAOD("TruthParticleContainer","SpclMC"+putype)
    return builder


# below, build a new TruthParticleContainer for each type of pile-up.
# we get the list of existing ESD TruthParticleContainer, and guess its pile-up type
# according to its suffix. 
inputTPContainer = objKeyStore['inputFile'].list("TruthParticleContainer")
prefix = "TruthParticleContainer#INav4MomTruthEvent"
for cont in inputTPContainer:
    suffix = cont[len(prefix):]
    if suffix == "":
        # the truth SIGNAL has already been scheduled above
        continue
    builder = getMcAODBuilder(suffix)
    builder.DoFiltering = False    
    job += builder


if rec.doWritexAOD():
    from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
    job += xAODMaker__xAODTruthCnvAlg(name = "GEN_AOD2xAOD", xAODTruthEventContainerName = "TruthEvent")
示例#2
0
printMCOutput = False

import AthenaPoolCnvSvc.ReadAthenaPool
svcMgr.EventSelector.InputCollections = ["evnt.pool.root"]

# Access the algorithm sequence:
from AthenaCommon.AlgSequence import AlgSequence
theJob = AlgSequence()

# Create the xAOD::EventInfo object:
theJob += CfgMgr.xAODMaker__EventInfoCnvAlg("EventInfoCnvAlg")

# Run the xAOD truth builder
from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
alg = xAODMaker__xAODTruthCnvAlg()
# Pile up options... default is no pile-up
alg.WriteInTimePileUpTruth = False
alg.WriteAllPileUpTruth = False
alg.AODContainerName = "GEN_EVENT"
alg.OutputLevel = INFO
theJob += alg

# Output
from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
xaodStream = MSMgr.NewPoolRootStream("StreamAOD", "xAOD.pool.root")

# Additional type(s) created automatically by RecExCommon:
xaodStream.AddItem("xAOD::EventInfo#EventInfo")
xaodStream.AddItem("xAOD::EventAuxInfo#EventInfoAux.")

# The types created explicitly by this job:
示例#3
0
include.block("RecExCommon/AOD2xAOD.py")

from MuonCombinedRecExample.MuonCombinedKeys import MuonCombinedKeys as MuonCbKeys

from xAODTrackingCnv.xAODTrackingCnvConf import xAODMaker__TrackParticleCnvAlg

if (objKeyStore.isInInput("<McEventCollection", "TruthEvent")):
    from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
    topSequence += xAODMaker__xAODTruthCnvAlg("GEN_AOD2xAOD")

    #EventInfo:
    if (objKeyStore.isInInput("EventInfo")
            and not objKeyStore.isInInput("xAOD::EventInfo")):
        from xAODEventInfoCnv.xAODEventInfoCreator import xAODMaker__EventInfoCnvAlg
        topSequence += xAODMaker__EventInfoCnvAlg()
#CaloClusters:
if (objKeyStore.isInInput("CaloClusterContainer")):
    from xAODCaloEventCnv.xAODCaloEventCnvConf import ClusterCreator
    topSequence += ClusterCreator(
    )  #Converts all CaloClusterContainers it finds in SG to xAOD
    pass

#SA
if objKeyStore.isInInput("Rec::TrackParticleContainer",
                         MuonCbKeys.ExtrapolatedMSParticles()):
    from xAODTrackingCnv.xAODTrackingCnvConf import xAODMaker__TrackParticleCnvAlg
    alg1 = xAODMaker__TrackParticleCnvAlg("TrackParticleCnvAlg_ExtrapolatedMS")
    alg1.AODContainerName = MuonCbKeys.ExtrapolatedMSParticles(
    )  #ExtrapolatedMuonSpectrometerParticles
    alg1.xAODContainerName = MuonCbKeys.ExtrapolatedMSParticles()
    #alg1.OutputLevel = VERBOSE
示例#4
0
#==============================================================================
# Set up common services and job object.
# This should appear in ALL derivation job options
#==============================================================================
from DerivationFrameworkCore.DerivationFrameworkMaster import *

#====================================================================
# ATTACH THE RECONSTRUCTION TO THE SEQUENCER
#====================================================================

# Add translator from EVGEN input to xAOD-like truth here
from RecExConfig.ObjKeyStore import objKeyStore
from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
if objKeyStore.isInInput("McEventCollection", "GEN_EVENT"):
    DerivationFrameworkJob += xAODMaker__xAODTruthCnvAlg(
        "GEN_EVNT2xAOD", AODContainerName="GEN_EVENT")

#====================================================================
# JET/MET
#====================================================================
# Set jet flags
from JetRec.JetRecFlags import jetFlags
jetFlags.useTruth = True
jetFlags.useTracks = False
# Add jet algorithms
from JetRec.JetAlgorithm import addJetRecoToAlgSequence
addJetRecoToAlgSequence(DerivationFrameworkJob, eventShapeTools=None)
from JetRec.JetRecStandard import jtm
from JetRec.JetRecConf import JetAlgorithm
jetFlags.truthFlavorTags = [
    "BHadronsInitial",
示例#5
0
    # Build compact hard truth object
    from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__CompactHardTruth
    makeHard = DerivationFramework__CompactHardTruth(McEvent="GEN_EVENT",
                                                     McEventOut="GEN_HARD",
                                                     MaxCount=0,
                                                     OutputLevel=Lvl.INFO)
    AST99Job += makeHard

    # Convert GEN_HARD to TruthEvent with new names
    # Need to set TruthLinks to avoid conflict with standard name?!
    from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
    AST99Job += xAODMaker__xAODTruthCnvAlg(
        "GEN_HARD2xAOD",
        AODContainerName="GEN_HARD",
        xAODTruthEventContainerName="TruthHardEvents",
        xAODTruthParticleContainerName="TruthHardParticles",
        xAODTruthVertexContainerName="TruthHardVertices",
        TruthLinks="TruthHardLinks",
        OutputLevel=Lvl.INFO)

    # Set up HardTruthThinning tool
    from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__HardTruthThinning
    # Keep B,D,tau decays
    cHadrons = [411, 421, 431, 4122, 4132, 4232, 4332]
    bHadrons = [511, 521, 531, 5122, 5132, 5232, 5332]
    tau = [15]
    keepers = cHadrons + bHadrons + tau
    # Keep particles in jets and around hard leptons
    TruthThinningTool = DerivationFramework__HardTruthThinning(
        name="TruthThinningTool",
        ThinningService="AST99ThinningSvc",
#  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration

## Configure and schedule jet finding algorithms for the jet
## containers defined in the user's JO fragment
##
## These algorithms must be scheduled *after* event generation and
## any corrections, but *before* the sequence of generator filters

# Convert HepMC event record to xAODTruth for use by jet tools
print 'bedzie konwersja !!'
from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
if not hasattr(prefiltSeq, 'xAODCnv'):
    prefiltSeq += xAODMaker__xAODTruthCnvAlg('xAODCnv',
                                             WriteTruthMetaData=False)
prefiltSeq.xAODCnv.AODContainerName = 'GEN_EVENT'

# Turn off jet tools specific to detector-level jets
print 'bedzie wylaczenie !!'
from JetRec.JetRecFlags import jetFlags
jetFlags.useTracks = False
jetFlags.eventShapeTools = []
jetFlags.useTopo = False
jetFlags.useMuonSegments = False
if hasattr(jetFlags, 'usePFlow'): jetFlags.usePFlow = False
elif hasattr(jetFlags, 'usePflow'): jetFlags.usePflow = False
else: raise NameError('jetFlags has no attribute usePflow or usePFlow')
jetFlags.useCaloQualityTool = False

# Attach jet algorithms
print 'podlacz algorytmy jetowe !!'
from JetRec.JetAlgorithm import addJetRecoToAlgSequence
示例#7
0
        name="McAodBuilder" + putype,
        outMcEvtCollection="GEN_AOD",  # this is the input to the CnvTool
        outTruthParticles="SpclMC" + putype,
    )
    builder.CnvTool.SelectSignalType = PileUpClassification.fromString(
        putype)  # min bias only

    objKeyStore.addStreamAOD("TruthParticleContainer", "SpclMC" + putype)
    return builder


# below, build a new TruthParticleContainer for each type of pile-up.
# we get the list of existing ESD TruthParticleContainer, and guess its pile-up type
# according to its suffix.
inputTPContainer = objKeyStore['inputFile'].list("TruthParticleContainer")
prefix = "TruthParticleContainer#INav4MomTruthEvent"
for cont in inputTPContainer:
    suffix = cont[len(prefix):]
    if suffix == "":
        # the truth SIGNAL has already been scheduled above
        continue
    builder = getMcAODBuilder(suffix)
    builder.DoFiltering = False
    job += builder

if ((objKeyStore.isInInput("McEventCollection", "GEN_AOD")
     or objKeyStore.isInInput("McEventCollection", "TruthEvent")) and
        not objKeyStore.isInInput("xAOD::TruthEventContainer", "TruthEvents")):
    from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
    job += xAODMaker__xAODTruthCnvAlg("GEN_AOD2xAOD")
示例#8
0
from DerivationFrameworkMCTruth.TruthDerivationTools import *

from AthenaCommon import Logging
dfcommontruthlog = Logging.logging.getLogger('DFCommonTruth')

# Execute this only for MC
from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkIsMonteCarlo
if DerivationFrameworkIsMonteCarlo:
    dfInputIsEVNT = False  # Flag to distinguish EVNT from AOD input
    # Build truth collection if input is HepMC. Must be scheduled first to allow slimming.
    # Input file is EVNT
    if objKeyStore.isInInput("McEventCollection", "GEN_EVENT"):
        if not hasattr(DerivationFrameworkJob, 'GEN_EVNT2xAOD'):
            DerivationFrameworkJob.insert(
                0,
                xAODMaker__xAODTruthCnvAlg("GEN_EVNT2xAOD",
                                           AODContainerName="GEN_EVENT"))
        dfInputIsEVNT = True
    # Input file is HITS and translation hasn't been scheduled - careful with the name difference!
    elif objKeyStore.isInInput("McEventCollection", "TruthEvent"):
        if not hasattr(DerivationFrameworkJob, 'GEN_AOD2xAOD'):
            DerivationFrameworkJob.insert(
                0,
                xAODMaker__xAODTruthCnvAlg("GEN_EVNT2xAOD",
                                           AODContainerName="TruthEvent"))
        dfInputIsEVNT = True
    # If it isn't available, make a truth meta data object (will hold MC Event Weights)
    #if not objKeyStore.isInInput( "xAOD::TruthMetaDataContainer", "TruthMetaData" ) and not dfInputIsEVNT:
    #    # If we are going to be making the truth collection (dfInputIsEVNT) then this will be made elsewhere
    #    from AthenaCommon.AppMgr import ToolSvc
    #    ToolSvc += CfgMgr.DerivationFramework__TruthMetaDataWriter(name='DFCommonTruthMetaDataWriter')
    #    from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__CommonAugmentation
示例#9
0
is_mc = (globalflags.DataSource == 'geant4')

doCreation = ( InDetFlags.doNewTracking() or InDetFlags.doPseudoTracking() or InDetFlags.doLargeD0() or InDetFlags.doR3LargeD0() \
                   or InDetFlags.doLowPtLargeD0() )  and InDetFlags.doParticleCreation()
doConversion = not InDetFlags.doNewTracking()  and not InDetFlags.doPseudoTracking() and not InDetFlags.doLargeD0() and not InDetFlags.doR3LargeD0()\
                    and not InDetFlags.doLowPtLargeD0() and InDetFlags.doParticleConversion()

if doCreation:
    printfunc("Creating xAOD::TrackParticles from Trk::Tracks")
if doConversion:
    printfunc("Converting Rec::TrackParticles to xAOD::TrackParticles")

# Run the xAOD truth builder for PU if needed
if InDetFlags.doSplitReco() and is_mc:
    from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
    xAODTruthCnvPU = xAODMaker__xAODTruthCnvAlg("xAODTruthCnvPU")
    xAODTruthCnvPU.WriteInTimePileUpTruth = False
    xAODTruthCnvPU.WriteAllPileUpTruth = True
    xAODTruthCnvPU.AODContainerName = "GEN_EVENT_PU"
    xAODTruthCnvPU.xAODTruthEventContainerName = "TruthEvents_PU"  #output
    xAODTruthCnvPU.xAODTruthPileupEventContainerName = "TruthPileupEvents_PU"  #output
    xAODTruthCnvPU.xAODTruthParticleContainerName = "TruthParticles_PU"  #output
    xAODTruthCnvPU.xAODTruthVertexContainerName = "TruthVertices_PU"  #output
    xAODTruthCnvPU.TruthLinks = "xAODTruthLinks_PU"  #output/intermediate
    xAODTruthCnvPU.MetaObjectName = "TruthMetaData_PU"  #output
    topSequence += xAODTruthCnvPU


def getInDetxAODParticleCreatorTool(prd_to_track_map=None, suffix=""):
    from AthenaCommon.AppMgr import ToolSvc
    if hasattr(ToolSvc, 'InDetxAODParticleCreatorTool' + suffix):
示例#10
0
from DerivationFrameworkCore.DerivationFrameworkMaster import *

#====================================================================
# ATTACH THE RECONSTRUCTION TO THE SEQUENCER
#====================================================================

# Flag to distinguish EVNT/xAOD input
isEVNT = True

# Add translator from EVGEN input to xAOD-like truth here
from RecExConfig.ObjKeyStore import objKeyStore
from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__xAODtoHepMCCnvAlg

if objKeyStore.isInInput("McEventCollection", "GEN_EVENT"):
    DerivationFrameworkJob += xAODMaker__xAODTruthCnvAlg(
        "GEN_EVNT2xAOD", AODContainerName="GEN_EVENT")
    isEVNT = True
else:
    # Add back-translator from xAOD::TruthEvent to HepMC for xAOD input
    # Needed to run hard truth on xAOD input files
    # Use GEN_EVENT name for output
    DerivationFrameworkJob += DerivationFramework__xAODtoHepMCCnvAlg(
        "xAOD2GEN_EVENT",
        xAODTruthEventKey="TruthEvents",
        HepMCTruthEventKey="GEN_EVENT",
        MaxCount=5,
        OutputLevel=Lvl.INFO)
    isEVNT = False

#==============================================================================
# Make truth jets and MET
# Not GEN stuff in data
if not globalflags.DataSource() == 'data':
    # --- Not sure if there is another quickest way to create the
    #     MC Truth info needed by the xAODMaker::TrackParticleCnv 
    #     than going through the creation of the AOD ??

    # -- create MC-truth particle info
    #from McParticleAlgs.JobOptCfg import McAodBuilder
    #from RecExConfig.ObjKeyStore import objKeyStore
    #if (cfgKeyStore.isInInput( "McEventCollection", "TruthEvent" ) and \
    #        not objKeyStore.isInInput( "McEventCollection", "GEN_AOD" )): 
    #if (objKeyStore.isInInput( "McEventCollection", "TruthEvent" ) and \
    #        not objKeyStore.isInInput( "McEventCollection", "GEN_AOD" )): 
    #topSequence.insert(0,McAodBuilder())
    from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
    GEN_AOD2xAOD = xAODMaker__xAODTruthCnvAlg("GEN_AOD2xAOD")
    GEN_AOD2xAOD.AODContainerName = "TruthEvent"
    GEN_AOD2xAOD.WriteInTimePileUpTruth = True
    topSequence.insert(0,GEN_AOD2xAOD)
    # Fix the bug comented in https://its.cern.ch/jira/browse/ATLASRECTS-2062
    topSequence.GEN_AOD2xAOD.ForceRerun=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
# JCD ADDED
#--------------------------------------------------------------
示例#12
0
ToolSvc += InDetTruthToTrack
InDetTruthToTrack.OutputLevel = OutputLevel  #VERBOSE

# track collection keys for statistics
if not 'TrackCollectionKeys' in dir():
    TrackCollectionKeys = []
if not 'TrackCollectionTruthKeys' in dir():
    TrackCollectionTruthKeys = []

TrackCollectionKeys += [InDetKeys.PseudoTracks()]
TrackCollectionTruthKeys += [InDetKeys.PseudoTracksTruth()]

from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
xAODTruthCnvAlg = xAODMaker__xAODTruthCnvAlg(name="xAODTruthCnvAlg",
                                             AODContainerName="TruthEvent",
                                             WriteInTimePileUpTruth=False,
                                             WriteAllPileUpTruth=False)
xAODTruthCnvAlg.OutputLevel = OutputLevel  #VERBOSE
topSequence += xAODTruthCnvAlg

print xAODTruthCnvAlg

# register internally used track summary tool
from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool
AtlasTrackSummaryTool = AtlasTrackSummaryTool()
ToolSvc += AtlasTrackSummaryTool

include("InDetRecExample/InDetxAODCreator.py")

public_InDetxAODParticleCreatorTool = getInDetxAODParticleCreatorTool()
public_InDetxAODParticleCreatorTool.TrackSummaryTool = InDetTrackSummaryTool
示例#13
0
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration

# Add translator from EVGEN input to xAOD-like truth here
from DerivationFrameworkCore.DerivationFrameworkMaster import *
from RecExConfig.ObjKeyStore import objKeyStore
from xAODTruthCnv.xAODTruthCnvConf import xAODMaker__xAODTruthCnvAlg
from DerivationFrameworkMCTruth.TruthDerivationTools import *

dfInputIsEVNT = False # Flag to distinguish EVNT from AOD input
# Build truth collection if input is HepMC. Must be scheduled first to allow slimming.
# Input file is EVNT
if objKeyStore.isInInput( "McEventCollection", "GEN_EVENT" ):
	DerivationFrameworkJob.insert(0,xAODMaker__xAODTruthCnvAlg("GEN_EVNT2xAOD",AODContainerName="GEN_EVENT"))
	dfInputIsEVNT = True
# Input file is HITS
elif objKeyStore.isInInput( "McEventCollection", "TruthEvent"):
	DerivationFrameworkJob.insert(0,xAODMaker__xAODTruthCnvAlg("GEN_EVNT2xAOD",AODContainerName="TruthEvent"))
	dfInputIsEVNT = True
# Input file must be xAOD
if (dfInputIsEVNT==False):
	# xAOD input so we need to schedule the special truth building tools and add them to a common augmentation
	augmentationToolsList = [  DFCommonTruthClassificationTool,
	                           DFCommonTruthMuonTool,DFCommonTruthElectronTool,
	                           DFCommonTruthPhotonToolSim,
	                           #DFCommonTruthTauTool,
                                   DFCommonTruthNeutrinoTool,
				   TRUTH3TopTool,
				   TRUTH3BosonTool,
				   TRUTH3BSMTool,
	                           DFCommonTruthElectronDressingTool, DFCommonTruthMuonDressingTool,
	                           DFCommonTruthElectronIsolationTool1, DFCommonTruthElectronIsolationTool2,