Forked from
atlas / athena
79096 commits behind the upstream repository.
-
Frank Winklmeier authored
Delete unused HSG5DPDUtils package that was already disabled in the build since a long time. Also delete a few related files in other packages that reference this package and are clearly obsolete.
Frank Winklmeier authoredDelete unused HSG5DPDUtils package that was already disabled in the build since a long time. Also delete a few related files in other packages that reference this package and are clearly obsolete.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
CoreCommonD3PD.py 33.29 KiB
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
# $Id: CoreGenericD3PD.py
#
#
#-------------------------------------
# general athena and D3PD imports
#-------------------------------------
from RecExConfig.RecFlags import rec
from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
from AthenaCommon.AlgSequence import AlgSequence
from AthenaCommon.AppMgr import ServiceMgr, ToolSvc, theApp
import D3PDMakerCoreComps
from D3PDMakerCoreComps.resolveSGKey import testSGKey
from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags,_string_prop
from D3PDMakerConfig.CommonD3PDMakerFlags import CommonD3PDMakerFlags
from D3PDMakerConfig.GenericTriggerBitsD3PDObject import GenericTriggerBitsD3PDObject
from D3PDMakerConfig.SUSYCustomMET import *
#from D3PDMakerConfig.PhotonCustomMET import *
from D3PDMakerConfig.CommonEventShapeD3PDObject import EventShapeD3PDObject
from D3PDMakerConfig.CoreTruthFilterTool import CoreTruthFilterTool
from SUSYD3PDMaker.SUSYD3PDFlags import SUSYD3PDFlags
import EventCommonD3PDMaker
from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig
from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig
from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject
from BackgroundD3PDMaker.BeamBackgroundD3PDObject import BeamBackgroundD3PDObject
from BackgroundD3PDMaker.BackgroundWordD3PDObject import BackgroundWordD3PDObject
from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata
#-------------------------------------
# reco object imports
#-------------------------------------
import CaloD3PDMaker
from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject
from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject
from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject
from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject
from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject
from CaloD3PDMaker.makeClusterFilter import makeClusterFilter
from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject
from egammaD3PDMaker.ElectronD3PDObject import ElectronClusterAssoc
from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject
from egammaD3PDMaker.PhotonD3PDObject import PhotonClusterAssoc
from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject
import BoostedTopD3PDMaker
from TrackD3PDMaker.V0D3PDObject import DefaultV0D3PDObject
from JetRecTools.JetRecToolsConf import *
from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags
from TrigJetD3PDMaker.EFJetD3PDObject import EFJetD3PDObject
from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject
from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject
from TauD3PDMaker.TauD3PDObject import TauD3PDObject
from TauD3PDMaker.makeTrackFilterAlg import makeTrackFilterAlg
from TopInputsD3PDMaker.HforD3PDObject import HforD3PDObject
from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags
import TrackD3PDMaker
#if(SUSYD3PDFlags.do01LepFactoryNtuple() == False): TrackD3PDFlags.storeTrackUnbiasedIPAtPV = True
from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject
from TrackD3PDMaker.TrackD3PDObject import TrackD3PDObject
from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject
from TrackD3PDMaker.TruthVertexD3PDObject import TruthVertexD3PDObject
from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject
import PhotonD3PDMaker
import JetD3PDMaker
from JetD3PDMaker.JetD3PDObject import JetD3PDObject
#-------------------------------------
# trigger imports
#-------------------------------------
import TriggerD3PDMaker
import TrigJetD3PDMaker
from TriggerD3PDMaker.JetROID3PDObject import JetROID3PDObject
from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject
from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata
from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject
from TrigMissingETD3PDMaker.TrigMETD3PD import TrigMETD3PDObjects
from TrigJetD3PDMaker.TrigJetD3PD import InitTrigD3PDObject
from TrigJetD3PDMaker.TrigJetD3PDObject import TrigJetD3PDObject
from TrigTauD3PDMaker.TrigEFTauD3PDObject import TrigEFTauD3PDObject
from TrigTauD3PDMaker.TrigL2TauD3PDObject import TrigL2TauD3PDObject
from TrigEgammaD3PDMaker.TrigEgammaD3PD import TrigEgammaD3PDObjects
#from D3PDMakerConfig.CommonTrigEgammaD3PD import CommonTrigEgammaD3PDObjects
from TrigMuonD3PDMaker.TrigMuonD3PD import TrigMuonD3PDObjects
#from D3PDMakerConfig.CommonTrigMuonD3PD import CommonTrigMuonD3PDObjects
from TrigBJetD3PDMaker.TrigBJetD3PD import TrigBJetD3PDObjects
from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool
from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits
from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject
from TrigCaloD3PDMaker.TrigEMClusterD3PDObject import TrigEMClusterD3PDObject
from TrigInDetD3PDMaker.TrigInDetTrackD3PDObject import TrigInDetTrackD3PDObject
from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import METD3PDTriggerBitsObject
from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation
import JetSubstructureD3PDMaker
import TauD3PDMaker
from D3PDMakerCoreComps.IndexAssociation import IndexAssociation
from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation
if rec.doTruth():
from egammaD3PDMaker.egammaTruthD3PDObject import egammaTruthD3PDObject
from EventCommonD3PDMaker.DRIndexMultiAssociation import DRIndexMultiAssociation
import TruthD3PDMaker
from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject
from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject
from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject
from TruthD3PDMaker.GenVertexD3PDObject import GenVertexD3PDObject
from TruthD3PDMaker.GenParticleD3PDObject import GenParticleD3PDObject
from TruthD3PDMaker.GenParticleD3PDObject import GenTruthTrackD3PDObject
from TruthD3PDMaker.MCTruthClassifierConfig import D3PDMCTruthClassifier
#-------------------------------------
# SUSY imports
#-------------------------------------
from SUSYD3PDMaker.SUSYD3PDMakerConf import *
from SUSYD3PDMaker.SUSYHardProcessD3PDObject import SUSYHardProcessD3PDObject
#D3PDMakerFlags.TruthWriteHadrons = True
#-------------------------------------
# Silence Trig Navigation Warnings
#-------------------------------------
ToolSvc += Trig__TrigDecisionTool( 'TrigDecisionTool')
ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR
topSequence = AlgSequence()
#addSUSYCustomMissingET( topSequence )
#PhotonCustomMET()
ExtendedJetD3PDObject = JetD3PDObject.copy()
myMuonD3PDObject = MuonD3PDObject.copy()
ExtendedTauD3PDObject = TauD3PDObject.copy()
#from CaloD3PDMaker import ClusterMomentFillerTool as CMFT
#ClusterD3PDObject.defineBlock (99, 'CenterMagMoments', CMFT, Moments = [CMFT.CENTER_MAG, 'centermag'])
# make truth jets WIDTH and SPLIT variables for truth jets R=0.4/0.6
import JetSubStructure
from JetRec.JetMomentGetter import make_JetMomentGetter
from JetMomentTools.JetMomentToolsConf import JetWidthTool
from JetRec.JetRecConf import JetSorterTool
widthtool = JetWidthTool('JS_JetWidthTool')
assoc_tool_truth = JetSubStructure.JetAssociationTool(
name = 'JetAssocToolTruth',
JetAlgTools = [widthtool], OutputLevel = 3)
jetsubstructure_tool_truth = JetSubStructure.JetSubstructureTool(
name = 'JetSubstructureToolTruth', UsedSignalState = 2, OutputLevel=3,
SubstructureTools = [JetSubStructure.KtTruthLeptonSubstructureTool("mytruthleptontool", OutputLevel=3, GroomedjetsAuthor = [])])
#make_JetMomentGetter("AntiKt4TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence)
#make_JetMomentGetter("AntiKt6TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence)
# SPLIT variables for R=0.4/0.6 jets.
jetsubstructure_tool = JetSubStructure.JetSubstructureTool(
name = 'JetSubstructureTool', UsedSignalState = 2, OutputLevel=3,
SubstructureTools = [JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = []) ])
#make_JetMomentGetter("AntiKt4TopoEMJets", [jetsubstructure_tool], topSequence)
#make_JetMomentGetter("AntiKt6TopoEMJets", [jetsubstructure_tool], topSequence)
make_JetMomentGetter("AntiKt4LCTopoNewJets", [jetsubstructure_tool], topSequence) # replacing RetaggedJets with NewJets
#make_JetMomentGetter("AntiKt6LCTopoNewJets", [jetsubstructure_tool], topSequence) # replacing RetaggedJets with NewJets
if rec.doTruth() and CommonD3PDMakerFlags.doRecTruthJet() :
make_JetMomentGetter("AntiKt4TruthNewJets", [jetsubstructure_tool], topSequence)
#make_JetMomentGetter("AntiKt6TruthNewJets", [jetsubstructure_tool], topSequence)
make_JetMomentGetter("AntiKt4TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence)
#make_JetMomentGetter("AntiKt6TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence)
make_JetMomentGetter("AntiKt4TrackJets", [jetsubstructure_tool], topSequence) # there is no TrackZJets but only TrackJets inside CommonJetTrackZClusterTool_jobOptions.py
#make_JetMomentGetter("AntiKt6TrackJets", [jetsubstructure_tool], topSequence)
jetsubstructure_tool_track4 = JetSubStructure.JetSubstructureTool(
name = 'JetSubstructureToolTrack', UsedSignalState = 2, OutputLevel=3,
SubstructureTools = [JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = []),
JetSubStructure.DipolarityTool("myDipolarityTool",GroomedjetsAuthor = []),
JetSubStructure.JetShapesSubstructureTool("myJetShapesTool", GroomedjetsAuthor = []),
JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=0.4,GroomedjetsAuthor = [])])
make_JetMomentGetter("AntiKt4TrackJets", [jetsubstructure_tool_track4], topSequence) # there is no TrackZJets but only TrackJets inside CommonJetTrackZClusterTool_jobOptions.py
from D3PDMakerConfig.CommonJSD3PD import AddHadronicInfo
#AddHadronicInfo(ExtendedJetD3PDObject, ['Tau1','Tau2','Tau3', 'ZCUT12', 'ZCUT23','ZCUT34','Dip12', 'Dip13', 'Dip23','DipExcl12','PlanarFlow','Angularity'], theblockname = 'substructureblocks', level=99)
#from JetD3PDMaker import JetMomentFillerTool
#ExtendedJetD3PDObject.defineBlock(99, 'splitInfoBlock', JetMomentFillerTool,Moments= ['SPLIT12', 'SPLIT23', 'SPLIT34'])
#------------------------------------------------
# additional define blocks to fill more variables
#------------------------------------------------
#ElectronClusterAssoc.defineBlock (0, 'ClusterTime', CaloD3PDMaker.ClusterTimeFillerTool,prefix = 'cl_')
#PhotonClusterAssoc.defineBlock (0, 'ClusterTime', CaloD3PDMaker.ClusterTimeFillerTool,prefix = 'cl_')
#ExtendedJetD3PDObject.defineBlock(99, 'Uncertainties', JetD3PDMaker.JetMomentFillerTool, Moments=['SmearingFactor'])
# track isolation for electrons, using new pt track cut -> 0.5GeV
from SUSYD3PDMaker.SUSYD3PDMakerConf import SUSYD3PD__SUSYEleTrkIsoFillerTool as SUSYEleTrkIsoFillerTool
#ElectronD3PDObject.defineBlock(1, "Isolation_500MeV", SUSYEleTrkIsoFillerTool, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool")
try:
from egammaTools.EMTrackIsolationToolBase import EMTrackIsolationToolBase
theemtrackisolationtool = EMTrackIsolationToolBase("emtrackisolationtool")
theemtrackisolationtool.useBremAssoc = True
ToolSvc += theemtrackisolationtool
except Exception:
traceback.print_exc()
ElectronD3PDObject.defineBlock(99, "miniiso10", BoostedTopD3PDMaker.MiniIsolationElectronFillerTool, EMTrackIsolationTool=theemtrackisolationtool, KtDist=10., prefix="MI10_")
ElectronD3PDObject.defineBlock(99, "miniiso15", BoostedTopD3PDMaker.MiniIsolationElectronFillerTool, EMTrackIsolationTool=theemtrackisolationtool, KtDist=15., prefix="MI15_")
# track isolation for muons, using new pt track cut -> 0.5GeV
#from SUSYD3PDMaker.SUSYD3PDMakerConf import SUSYD3PD__SUSYMuTrkIsoFillerTool as SUSYMuTrkIsoFillerTool
#myMuonD3PDObject.defineBlock(1, "Isolation_500MeV", SUSYMuTrkIsoFillerTool, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool", NamePrefix="trk500MeV")
#myMuonD3PDObject.defineBlock(1, "Isolation_elstyletracks", SUSYMuTrkIsoFillerTool, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool7",NamePrefix="trkelstyle")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_20", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.2,prefix="cone20_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_30", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.3,prefix="cone30_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_40", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4,prefix="cone40_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_1GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool1", prefix="cone40_ptmin1gev_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_2GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool2", prefix="cone40_ptmin2gev_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_3GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool3", prefix="cone40_ptmin3gev_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_3GeV_hitschi", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool6", prefix="cone40_ptmin3gev_hitschi_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_4GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool4", prefix="cone40_ptmin4gev_")
#TrackParticleD3PDObject.defineBlock(999, "Isolation_50_5GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool5", prefix="cone40_ptmin5gev_")
#IndexMultiAssociation(ExtendedJetD3PDObject, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'el_',level = 99,
# prefix='Electron_', blockname='elecblockindex', AssociationName='jetsubstructure_electrons',
# IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR','X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime', 'contained'], IndexedMomentsSuffix = "_E" )
#IndexMultiAssociation(ExtendedJetD3PDObject, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'mu_',level = 99,
# prefix='Muon_', blockname='muonblockindex', AssociationName='jetsubstructure_muons',
# IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR', 'X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime','contained'], IndexedMomentsSuffix = "_U")
if rec.doTruth():
from TruthD3PDAnalysis.truthParticleConfig import truthParticleConfig
truthParticleConfig(topSequence, sgkey=D3PDMakerFlags.TruthParticlesSGKey(), writeHadrons=True, writePartons=True, writeGeant=False)
JetROID3PDObject.defineBlock( 0, "myKinematics",
EventCommonD3PDMaker.FourMomFillerTool,
WriteM = False, WritePt = True,
prefix = "myKin_")
#TrackParticleD3PDObject.defineBlock( 99, "TJVAperigee",
# TauD3PDMaker.TrackParticleAtTJVAFillerTool, prefix = 'atTJVA_')
# Special muon isolation variables
#from AthenaCommon.AppMgr import ToolSvc
from AthenaCommon.Include import include
include( "MuonIsolationTools/MuonIsolationTool_jobOptions.py" )
myMuonD3PDObject.defineBlock(0, "miniiso10", BoostedTopD3PDMaker.MiniIsolationMuonFillerTool, MuIsolationTool=ToolSvc.MuonIsolationTool, KtDist=10., prefix="MI10_")
myMuonD3PDObject.defineBlock(0, "miniiso15", BoostedTopD3PDMaker.MiniIsolationMuonFillerTool, MuIsolationTool=ToolSvc.MuonIsolationTool, KtDist=15., prefix="MI15_")
#Add new triggers at request of HSG6
defineTriggerBits( TauD3PDObject, 0, [ "EF_tau29T_medium1_xe55_tclcw", "EF_tau29T_medium1_xe55_tclcw_tight" ] )
#------------------------------------------------------------------
# Enable saving the object metadata for D3PDReader code generation
#------------------------------------------------------------------
from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags
D3PDMakerFlags.SaveObjectMetadata = True
flags = CommonD3PDMakerFlags
# ... high-pt tracks (nSCT>3; pt>4 GeV)
if rec.doTruth():
# ... remove empty GenEvents
from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool
smwzGenEvtFilterTool = D3PD__GenObjectsFilterTool( "smwzGenEvtFilterTool" )
ToolSvc += smwzGenEvtFilterTool
smwzGenEvtFilterTool.RemoveDummyEvents = True
smwzGenEvtFilterTool.RemoveInTimePileUp = True
smwzGenEvtFilterTool.Remove2BCPileUp = True
smwzGenEvtFilterTool.Remove800nsPileUp = True
smwzGenEvtFilterTool.RemoveCavernBkg = True
smwzGenEvtFilterTool.RemoveEmptyEvents = True
# ... heavy flavor truth information
smwzhfGenVtxFilterTool = D3PD__GenObjectsFilterTool( "SMWZHFGenVtxFilterTool" )
ToolSvc += smwzhfGenVtxFilterTool
smwzhfGenVtxFilterTool.RemoveInTimePileUp = False
smwzhfGenVtxFilterTool.Remove2BCPileUp = True
smwzhfGenVtxFilterTool.Remove800nsPileUp = True
smwzhfGenVtxFilterTool.RemoveCavernBkg = True
smwzhfGenVtxFilterTool.RemoveEmptyEvents = True
smwzhfGenVtxFilterTool.RemoveDummyEvents = True
smwzhfGenVtxFilterTool.RemoveUnrequestedParticles=True
smwzhfGenVtxFilterTool.KeepBCHadrons=True
smwzhfGenPartFilterTool = D3PD__GenObjectsFilterTool( "SMWZHFGenPartFilterTool" )
ToolSvc += smwzhfGenPartFilterTool
smwzhfGenPartFilterTool.RemoveInTimePileUp = False
smwzhfGenPartFilterTool.Remove2BCPileUp = True
smwzhfGenPartFilterTool.Remove800nsPileUp = True
smwzhfGenPartFilterTool.RemoveCavernBkg = True
smwzhfGenPartFilterTool.RemoveEmptyEvents = True
smwzhfGenPartFilterTool.RemoveDummyEvents = True
smwzhfGenPartFilterTool.RemoveUnrequestedParticles=True
smwzhfGenPartFilterTool.KeepBCQuarks=True
smwzhfGenPartFilterTool.KeepBCQuarkAncestors=True
smwzhfGenPartFilterTool.KeepBCHadrons=True
smwzhfGenPartFilterTool.KeepBCHadronDecayChain=True
smwzhfGenPartFilterTool.BCHadronsDescendantsPtCut=200
smwzhfGenPartFilterTool.BCHadronsDescendantsBarcodeCut=300000
smwzhfGenPartFilterTool.BCHadronsDescendantsEtaCut=5
# ... leptonic W/Z truth information
smwzlepwzGenPartFilterTool = D3PD__GenObjectsFilterTool( "SMWZLepWZGenPartFilterTool" )
ToolSvc += smwzlepwzGenPartFilterTool
smwzlepwzGenPartFilterTool.RemoveInTimePileUp = True
smwzlepwzGenPartFilterTool.Remove2BCPileUp = True
smwzlepwzGenPartFilterTool.Remove800nsPileUp = True
smwzlepwzGenPartFilterTool.RemoveCavernBkg = True
smwzlepwzGenPartFilterTool.RemoveEmptyEvents = True
smwzlepwzGenPartFilterTool.RemoveDummyEvents = True
smwzlepwzGenPartFilterTool.RemoveUnrequestedParticles=True
smwzlepwzGenPartFilterTool.KeepLeptonicWZBosons=True
smwzlepwzGenPartFilterTool.KeepLeptonicWZBosonDecayChains=True
smwzlepwzGenPartFilterTool.KeepLeptonicWZBosonsParents=True
### for NTUP_PHOTON
#associate the electron to a track
import egammaD3PDMaker
from D3PDMakerCoreComps.IndexAssociation import IndexAssociation
ElectronTrackParticleIndexAssociation = IndexAssociation(ElectronD3PDObject,
egammaD3PDMaker.egammaTrackParticleAssociationTool,
target="trk",
prefix="trk_",
level=1,
blockname="TrackIndex",
allowMissing=False)
GSFTrackParticlesInSample = testSGKey ('Rec::TrackParticleContainer', "GSFTrackParticleCandidate")
if GSFTrackParticlesInSample:
from D3PDMakerCoreComps.IndexAssociation import IndexAssociation
ElectronTrackParticleIndexAssociation = IndexAssociation(ElectronD3PDObject,
egammaD3PDMaker.egammaTrackParticleAssociationTool,
target="GSF_trk",
prefix="GSF_trk_",
level=1,
blockname="GSFTrackIndex",
allowMissing=False)
# ********************************** begin add eraw57 and topocluster isolations ********************************* #
#CellsSGKey = "AODCellContainer"
## Some common tools for isolation calculations
## create tool CaloNoiseTool
#from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault
#theCaloNoiseTool=CaloNoiseToolDefault('db')
#ToolSvc += theCaloNoiseTool
## add tool egammaiso
#from egammaCaloTools.egammaCaloToolsConf import egammaIso
#theegammaiso=egammaIso("PD3PD_egammaIso",
# CaloNoiseTool= theCaloNoiseTool)
#ToolSvc += theegammaiso
#from CaloClusterCorrection.CaloClusterCorrectionConf import CaloFillRectangularCluster as cfrc
#caloFillRect = cfrc(name = "PhotonD3PD_CaloFillRectangularCluster",
# eta_size = 5,
# phi_size = 7,
# cells_name = CellsSGKey)
#ToolSvc += caloFillRect
#PhotonUDPrefix = "PhotonD3PD::PhotonUDPrefix_"
#IsolationVars = []
#Fill_EtCone_exclude_phi_strip = []
#Fill_Etconoise_Radii = []
#Fill_Etconoise_Sigma = []
#Fill_Etringnoise_Radii = []
#Fill_Etringnoise_Sigma = []
#Fill_EM_Layer_0 = []
#Fill_EM_Layer_1 = []
#Fill_EM_Layer_2 = []
#Fill_EM_Layer_3 = []
#Fill_HAD_Layer_0 = []
#Fill_HAD_Layer_1 = []
#Fill_HAD_Layer_2 = []
#Fill_TopoCluster = [] # These should be already filled!
#Fill_PositiveTopoCluster = [20, 30, 40, 50, 60]
#IsolationVars.extend(['topoPosEtcone20', '', 'float'])
#IsolationVars.extend(['topoPosEtcone30', '', 'float'])
#IsolationVars.extend(['topoPosEtcone40', '', 'float'])
#IsolationVars.extend(['topoPosEtcone50', '', 'float'])
#IsolationVars.extend(['topoPosEtcone60', '', 'float'])
#Fill_TopoEMCluster = [] # These should be already filled!
#Fill_PositiveTopoEMCluster = [20, 30, 40, 50, 60]
#IsolationVars.extend(['topoEMPosEtcone20', '', 'float'])
#IsolationVars.extend(['topoEMPosEtcone30', '', 'float'])
#IsolationVars.extend(['topoEMPosEtcone40', '', 'float'])
#IsolationVars.extend(['topoEMPosEtcone50', '', 'float'])
#IsolationVars.extend(['topoEMPosEtcone60', '', 'float'])
#preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName())
#DVGetter = D3PDMakerCoreComps.SGDataVectorGetterTool
#preseq += PhotonD3PDMaker.IsolationCalculatorAlg ("PhotonIsoAlg",
# EgammaGetter = DVGetter ('PhotonIsoAlgPhotonGetter',
# TypeName = 'PhotonContainer',
# SGKey = D3PDMakerFlags.PhotonSGKey()),
# ClusterGetter = DVGetter ('PhotonIsoAlgClusterGetter',
# TypeName = 'CaloClusterContainer',
# SGKey = D3PDMakerFlags.ClusterSGKey()),
# EMCaloIsolationTool = theegammaiso,
# CaloFillRectangularClusterTool= caloFillRect,
# UDPrefix = PhotonUDPrefix,
# CellContainerName = CellsSGKey,
# Fill_TopoCluster = Fill_TopoCluster,
# Fill_PositiveTopoCluster = Fill_PositiveTopoCluster,
# Fill_TopoEMCluster = Fill_TopoEMCluster,
# Fill_PositiveTopoEMCluster = Fill_PositiveTopoEMCluster,
# Fill_EtCone_exclude_phi_strip = Fill_EtCone_exclude_phi_strip,
# Fill_EM_Layer_0 = Fill_EM_Layer_0 ,
# Fill_EM_Layer_1 = Fill_EM_Layer_1 ,
# Fill_EM_Layer_2 = Fill_EM_Layer_2 ,
# Fill_EM_Layer_3 = Fill_EM_Layer_3 ,
# Fill_HAD_Layer_0 = Fill_HAD_Layer_0,
# Fill_HAD_Layer_1 = Fill_HAD_Layer_1,
# Fill_HAD_Layer_2 = Fill_HAD_Layer_2,
# Fill_Etconoise_Radii = Fill_Etconoise_Radii,
# Fill_Etconoise_Sigma = Fill_Etconoise_Sigma,
# Fill_Etringnoise_Radii = Fill_Etringnoise_Radii,
# Fill_Etringnoise_Sigma = Fill_Etringnoise_Sigma
# )
## raw cluster variables
#IsolationVars.extend(['Eraw57' , '', 'float',
# 'etaraw57', '', 'float']);
#PhotonD3PDObject.defineBlock(1, "PhotonUDIsoVars",
# D3PDMakerCoreComps.UserDataFillerTool,
# UDPrefix = PhotonUDPrefix,
# Vars = IsolationVars)
# ********************************** end add eraw57 and topocluster isolations ********************************* #
## This part creates an index (and some other content) for the tracks associated with the primary
## conversion vertex, with the index pointing towards the "trk_" block
## Associate the photon with TrackParticles
#ConversionTrackParticleAssociation = IndexMultiAssociation(PhotonD3PDObject,
# PhotonD3PDMaker.ConversionTrackParticleAssociationTool,
# "trk",
# "convTrk_",
# level=1,
# blockname="ConversionTrackIndex",
# allowMissing=False)
## Associate the track particles with their TrackInfo
#ConversionTrackParticleTrackInfoAssociation = SimpleAssociation(ConversionTrackParticleAssociation,
# TrackD3PDMaker.TrackParticleInfoAssociationTool)
#ConversionTrackParticleTrackInfoAssociation.defineBlock(1, "ConversionTrackInfo", TrackD3PDMaker.TrackInfoFillerTool)
## This part is very similar to the above, but it does it for all conversion vertices
## associated with the photon. So it makes vector<vector<vector<T>>>'s, again with the
## index pointing towards the trk_ block.
## In principle, this could replace the block above, since all the information in
## the previous block is contained in these vectors.
#from D3PDMakerCoreComps.ContainedMultiAssociation import ContainedMultiAssociation
#from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation
## Associate the photon with secondary vertices
#ConversionVertexAssociation = ContainedVectorMultiAssociation(PhotonD3PDObject,
# PhotonD3PDMaker.ConversionVertexAssociationTool,
# prefix='vx_')
## Associate each secondary vertex with VxTrackAtVertex's
#ConversionVertexTrackAssociation = ContainedVectorMultiAssociation(ConversionVertexAssociation,
# TrackD3PDMaker.VertexTrackAssociationTool,
# prefix="convTrk_")
## Associate each VxTrackAtVertex with a TrackParticle
#ConversionVertexTrackTrackParticleAssociation = IndexAssociation(ConversionVertexTrackAssociation,
# TrackD3PDMaker.VxTrackAtVertexTrackParticleAssociationTool,
# "trk",
# '',
# level=1,
# blockname="ConversionVertexTrackIndex",
# allowMissing=False)
## Associate each TrackParticle with TrackInfo
#ConversionVertexTrackTrackParticleTrackInfoAssociation = SimpleAssociation(ConversionVertexTrackTrackParticleAssociation,
# TrackD3PDMaker.TrackParticleInfoAssociationTool)
#ConversionVertexTrackTrackParticleTrackInfoAssociation.defineBlock(1, "ConversionVertexTrackInfo", TrackD3PDMaker.TrackInfoFillerTool)
# Track parameters at conversion vertex
from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation
from egammaD3PDMaker.PhotonD3PDObject import ConversionVertexAssociation
VxTrackAtConversionVertexAssociationTool = ContainedVectorMultiAssociation(ConversionVertexAssociation,
PhotonD3PDMaker.VxTrackAtVertexAssociationTool,
prefix="paramsAtConvVtx_")
ConversionVertexTrackTrackParticlePerigeeAtVertexAssociationTool = SimpleAssociation(VxTrackAtConversionVertexAssociationTool,
PhotonD3PDMaker.ConversionPerigeeAssociationTool)
ConversionVertexTrackTrackParticlePerigeeAtVertexAssociationTool.defineBlock (1, 'Trk',
TrackD3PDMaker.PerigeeFillerTool)
TrackParticleCovarAssoc = SimpleAssociation (ConversionVertexTrackTrackParticlePerigeeAtVertexAssociationTool,
TrackD3PDMaker.PerigeeCovarianceAssociationTool)
TrackParticleCovarAssoc.defineBlock (3, 'TrkCovDiag',
TrackD3PDMaker.CovarianceFillerTool,
IsTrackPerigee = True,
Error = False,
DiagCovariance = True)
TrackParticleCovarAssoc.defineBlock (3, 'TrkCovOffDiag',
TrackD3PDMaker.CovarianceFillerTool,
IsTrackPerigee = True,
Error = False,
OffDiagCovariance = True)
# ********* already added in PhotonD3PDObject, don't need here ************* #
# Associate the photon with secondary vertices
#from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation
#ConversionVertexAssociation = ContainedVectorMultiAssociation(PhotonD3PDObject,
# egammaD3PDMaker.ConversionVertexAssociationTool,
# prefix='vx_')
#ConversionVertexAssociation.defineBlock(10, 'ConversionVertexPosition', TrackD3PDMaker.VertexPositionFillerTool)
#ConversionVertexAssociation.defineBlock(10, 'ConversionVertexKinematics', TrackD3PDMaker.VertexKineFillerTool)
# Associate each secondary vertex with VxTrackAtVertex's
#ConversionVertexTrackAssociation = ContainedVectorMultiAssociation(ConversionVertexAssociation,
# TrackD3PDMaker.VertexTrackAssociationTool,
# prefix="convTrk_")