def addHSG2VertexReconstruction(d3pdalg, quadruplet_key="QuadrupletCandidates", vertex_key="QuadrupletVertexCandidates", electron_target="el_", muid_target="mu_muid_", staco_target="mu_staco_", calo_target="mu_calo_", muon_target="mu_muon_"): # Add information about the vertices separately: from TrackD3PDMaker.xAODVertexD3PDObject import PrimaryxAODVertexD3PDObject d3pdalg += PrimaryxAODVertexD3PDObject(1, sgkey=vertex_key, prefix="quad_vertex_") # Add the information about the quadruplets: from HiggsD3PDMaker.HSG2QuadrupletD3PDObject import HSG2QuadrupletD3PDObject d3pdalg += HSG2QuadrupletD3PDObject(10, sgkey=quadruplet_key, prefix="quad_", VertexIndex_target="quad_vertex_", ElectronIndex_target=electron_target, MuonMuidIndex_target=muid_target, MuonStacoIndex_target=staco_target, MuonCaloIndex_target=calo_target, MuonIndex_target=muon_target) return
def JetTileD3PD(file, level=4, tuplename='MyTuple', seq=topSequence, D3PDSvc='D3PD::RootD3PDSvc', streamNameRoot=None, **kw): alg = D3PDMakerCoreComps.MakerAlg(tuplename, seq, file=file, D3PDSvc=D3PDSvc, streamNameRoot=streamNameRoot) JetIncludes = ['AssocTrackCont'] alg += EventInfoD3PDObject(**_args(level, 'EventInfo', kw)) alg += JetTileD3PDObject(**_args( level, inputSGkey, kw, sgkey=inputSGkey, prefix='AntiKt4Topo_')) from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata alg += BGCodeD3PDObject(**_args(2, 'BGCode', kw)) addBunchStructureMetadata(alg) from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata alg += TrigDecisionD3PDObject(**_args(10, 'TrigDecision', kw)) addTrigConfMetadata(alg) if D3PDMakerFlags.DoTrigger(): alg += jetMETTriggerBitsD3PDObject(level) from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags TrackD3PDFlags.storeVertexTrackIndexAssociation.set_Value_and_Lock(False) TrackD3PDFlags.storeVertexTrackAssociation.set_Value_and_Lock(False) TrackD3PDFlags.storeVertexFitQuality.set_Value_and_Lock(False) from TrackD3PDMaker.xAODVertexD3PDObject import PrimaryxAODVertexD3PDObject alg += PrimaryxAODVertexD3PDObject( **_args(0, 'PrimaryVertex', kw, allowMissing=True, sgkey=D3PDMakerFlags.VertexSGKey(), prefix='vxp_')) if rec.doTruth(): alg += GenEventD3PDObject(**_args(1, 'GenEvent', kw)) alg += TruthParticleD3PDObject(**_args(1, 'TruthParticle', kw)) alg += JetTileD3PDObject(**_args(1, 'AntiKt4TruthJets', kw, sgkey='AntiKt4TruthJets', prefix='AntiKt4Truth_')) alg.MetadataTools += [LBMetadataConfig()] return alg
def backgroundD3PD(alg=None, level=10, file='background.root', tuplename='background', flags=BackgroundD3PDMakerFlags, **kw): preseq = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName()) if (not hasattr(topSequence, 'BeamBackgroundFiller') and not hasattr(preseq, 'BeamBackgroundFiller')): if cfgKeyStore.isInInput("Trk::SegmentCollection", "ConvertedMBoySegments"): from RecBackgroundAlgs import RecBackgroundAlgsConf preseq += RecBackgroundAlgsConf.BeamBackgroundFiller() if (not hasattr(topSequence, 'BeamBackgroundFillerMoore') and not hasattr(preseq, 'BeamBackgroundFillerMoore')): if cfgKeyStore.isInInput("Trk::SegmentCollection", "MooreSegments"): from RecBackgroundAlgs.RecBackgroundAlgsConf import BeamBackgroundFiller BeamBackgroundFillerMoore = BeamBackgroundFiller( 'BeamBackgroundFillerMoore', muonSegmentContainerKey='MooreSegments', BeamBackgroundKey='BeamBackgroundDataMoore') preseq += BeamBackgroundFillerMoore # The core algorithm if not alg: from OutputStreamAthenaPool.MultipleStreamManager import MSMgr alg = MSMgr.NewRootStream(tuplename, file) #Event level info alg += EventInfoD3PDObject(**_args(1, 'EventInfo', kw)) if globalflags.DataSource == "data": alg += LBLengthD3PDObject(**_args(0, 'LBLength', kw)) if rec.doTruth(): from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject alg += GenEventD3PDObject(**_args(0, 'GenEvent', kw)) if rec.doTrigger(): alg += TrigDecisionD3PDObject(**_args(2, 'TrigDecision', kw)) addTrigConfMetadata(alg) bcToolType = "" if globalflags.DataSource == "data": bcToolType = "LHC" addBunchStructureMetadata(alg, bcToolType) alg += BGCodeD3PDObject(**_args(2, 'BGCode', kw)) if flags.AddTriggerBits(): alg += getBkgdTriggerBitsD3PDObject([]) alg += BackgroundWordD3PDObject(**_args(0, 'BkgWord', kw)) if flags.doLUCID(): alg += Lucid_RawDataD3PDObject(**_args(0, 'Lucid', kw)) alg += RawInfoSummaryForTagD3PDObject(**_args(0, 'SumForTag', kw)) alg += MBTSD3PDObject(**_args(0, 'MBTS', kw)) alg += LArCollisionTimeD3PDObject(**_args(0, 'LArTimeDiff', kw)) if flags.doMet(): alg += MissingETD3PDObject(**_args(1, 'MET_RefFinal', kw, sgkey='MET_RefFinal', prefix='MET_RefFinal', allowMissing=True)) alg += MuonD3PDObject( **_args(0, 'Muon', kw, sgkey='MuonCollection', prefix='mu_', include=[ "Isolation", "Quality", "MuonTimingFillerTool", "MuonTileTimeTool", "ChamberT0" ], allowMissing=True)) alg += MuonD3PDObject( **_args(0, 'MuidMuon', kw, sgkey='MuidMuonCollection', prefix='mu_muid_', include=[ "Isolation", "Quality", "MuonTimingFillerTool", "MuonTileTimeTool", "ChamberT0" ], allowMissing=True)) alg += MuonD3PDObject( **_args(0, 'StacoMuon', kw, sgkey='StacoMuonCollection', prefix='mu_staco_', include=[ "Isolation", "Quality", "MuonTimingFillerTool", "MuonTileTimeTool", "ChamberT0" ], allowMissing=True)) if flags.doCaloMuon(): alg += MuonD3PDObject( **_args(0, 'CaloMuon', kw, sgkey='CaloMuonCollection', prefix='mu_calo_', include=[ "Isolation", "Quality", "MuonTimingFillerTool", "MuonTileTimeTool", "ChamberT0" ], allowMissing=True)) alg += MuonSegmentD3PDObject(**_args( 1, 'MuonSeg', kw, sgkey='MuonSegments', prefix='museg_', # MooreSegmentT0 takes the default time # MuonboySegmentT0 recalculates time (see MuonSegmentD3PDObject.py and MuonSegmentT0FillerTool.cxx) include=['MooreSegmentT0'], exclude=['MuonboySegmentT0'], allowMissing=True)) alg += MuonSegmentD3PDObject(**_args(1, 'MooreSeg', kw, sgkey='MooreSegments', prefix='mooreseg_', include=['MooreSegmentT0'], exclude=['MuonboySegmentT0'], allowMissing=True)) alg += MuonSegmentD3PDObject(**_args(1, 'MboySeg', kw, sgkey='ConvertedMBoySegments', prefix='mboyseg_', include=['MuonboySegmentT0'], exclude=['MooreSegmentT0'], allowMissing=True)) if flags.doMuGirlSeg(): alg += MuonSegmentD3PDObject(**_args(1, 'MuGirlSeg', kw, sgkey='MuGirlSegments', prefix='mgseg_', include=['MooreSegmentT0'], exclude=['MuonboySegmentT0'], allowMissing=True)) if flags.doTrk(): alg += xAODTrackParticleD3PDObject( **_args(0, 'TrackParticle', kw, prefix='trk_')) if flags.doMuonHits(): alg += MdtPrepDataD3PDObject(0) alg += RpcPrepDataD3PDObject(0) alg += CscPrepDataD3PDObject(0) alg += TgcPrepDataD3PDObject(0) alg += TgcPrepDataD3PDObject(**_args(0, 'TGC_MeasurementsPriorBC', kw, sgkey='TGC_MeasurementsPriorBC', prefix='tgcPriorBC_', label='TgcPrepDataPriorBC')) alg += TgcPrepDataD3PDObject(**_args(0, 'TGC_MeasurementsNextBC', kw, sgkey='TGC_MeasurementsNextBC', prefix='tgcNextBC_', label='TgcPrepDataNextBC')) if flags.doCaloJet(): #alg += JetD3PDObject (**_args(4,'AntiKt4TopoEMJets', kw, sgkey='AntiKt4TopoEMJets', prefix='AntiKt4TopoEM_', include='BeamBackground' )) if cfgKeyStore.isInInput("Trk::SegmentCollection", "ConvertedMBoySegments"): alg += JetD3PDObject( **_args(4, 'AntiKt4TopoEMJets', kw, sgkey='AntiKt4TopoEMJets', prefix='AntiKt4TopoEM_', include=['BeamBackground'], exclude=[ 'JetVertexFraction', 'JVtx', 'ActiveArea', 'TruthMF', 'TracksMoments' ], BeamBackground_BeamBackgroundKey='BeamBackgroundData')) else: alg += JetD3PDObject( **_args(4, 'AntiKt4TopoEMJets', kw, sgkey='AntiKt4TopoEMJets', prefix='AntiKt4TopoEM_', exclude=[ 'JetVertexFraction', 'JVtx', 'ActiveArea', 'TruthMF', 'TracksMoments' ])) else: alg += JetD3PDObject( **_args(4, 'AntiKt4TrackJets', kw, sgkey='AntiKt4TrackJets', prefix='AntiKt4Track_', exclude=[ 'JetVertexFraction', 'JVtx', 'ActiveArea', 'TruthMF', 'TracksMoments' ])) alg += PrimaryxAODVertexD3PDObject(0) if flags.doBeamBkgd(): #alg += BeamBackgroundD3PDObject(1) if cfgKeyStore.isInInput("Trk::SegmentCollection", "ConvertedMBoySegments"): alg += BeamBackgroundD3PDObject( **_args(1, 'BeamBackgroundData', kw, sgkey='BeamBackgroundData', prefix='bb_', bbJetIndex_Target='AntiKt4TopoEM_', bbClusterIndex_Target='cl_')) if cfgKeyStore.isInInput("Trk::SegmentCollection", "MooreSegments"): alg += BeamBackgroundD3PDObject( **_args(1, 'BeamBackgroundData', kw, sgkey='BeamBackgroundDataMoore', prefix='bbMoore_', bbJetIndex_Target='AntiKt4TopoEM_', bbClusterIndex_Target='cl_')) if flags.doBCM(): alg += BcmRdoFlatD3PDObject(**_args(0, 'BCMRdo', kw)) if flags.doZDC(): if globalflags.DataSource == "data": alg += ZdcD3PDObject(10) if flags.doPixelClus(): from InDetD3PDMaker.PixelClusterD3PDObject import PixelClusterD3PDObject alg += PixelClusterD3PDObject(0) if flags.doCaloClus(): from CaloSysD3PDMaker.ClusterD3PDObject import ClusterD3PDObject alg += ClusterD3PDObject(1) return alg
TrigMETD3PDObjects(d3pdalg) pass ## ## Additional offline information: ## from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags TrackD3PDFlags.vertexPositionLevelOfDetails = 1 TrackD3PDFlags.storeVertexTrackIndexAssociation = False TrackD3PDFlags.storeVertexFitQuality = True TrackD3PDFlags.storeVertexKinematics = True from TrackD3PDMaker.xAODVertexD3PDObject import PrimaryxAODVertexD3PDObject if cfgKeyStore.isInInput("VxContainer", "VxPrimaryCandidate", "PrimaryVertices"): d3pdalg += PrimaryxAODVertexD3PDObject(0, prefix="vxp_") else: TriggerD3PDStream_msg.warning( "Offline primary vertices not found in input") pass ## ## Add the different sorts of metadata: ## from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig d3pdalg.MetadataTools += [LBMetadataConfig()] if triggerAvailable: from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata addTrigConfMetadata(d3pdalg) pass from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata
def JetD3PD(file, level=4, tuplename='jet', seq=topSequence, D3PDSvc='D3PD::RootD3PDSvc'): egammaUserDataConfig(seq) if rec.doTruth(): truthParticleConfig(seq) JetIncludes = ['AssocTrackCont'] alg = D3PDMakerCoreComps.MakerAlg(tuplename, seq, file=file, D3PDSvc=D3PDSvc) #-- General alg += EventInfoD3PDObject(level) alg += ElectronD3PDObject(0) alg += PhotonD3PDObject(0) alg += MuonD3PDObject(0) alg += PrimaryxAODVertexD3PDObject(4, allowMissing=True, sgkey=D3PDMakerFlags.VertexSGKey(), prefix='vxp_') #-- JET alg += JetD3PDObject(level, sgkey='AntiKt4H1TopoJets', include=JetIncludes, prefix='AntiKt4H1Topo_') alg += JetD3PDObject(level, sgkey='AntiKt6H1TopoJets', include=JetIncludes, prefix='AntiKt6H1Topo_') #alg += JetD3PDObject (level, sgkey='Cone4H1TopoJets', include = JetIncludes, prefix='Cone4H1Topo_' ) #-- MET alg += RefFinalMETD3PDObject(level) alg += MuonMETD3PDObject(level) alg += MuonBoyMETD3PDObject(level) alg += FinalMETD3PDObject(level) alg += CryoMETD3PDObject(level) alg += CryoConeMETD3PDObject(level) alg += RefEleMETD3PDObject(level) alg += RefJetMETD3PDObject(level) alg += RefGammaMETD3PDObject(level) alg += RefTauMETD3PDObject(level) alg += CellOutMETD3PDObject(level) alg += BaseMETD3PDObject(level) alg += Base0METD3PDObject(level) alg += CalibMETD3PDObject(level) alg += MuonBoySpectroMETD3PDObject(level) alg += MuonBoyTrackMETD3PDObject(level) alg += TopoMETD3PDObject(level) alg += CorrTopoMETD3PDObject(level) alg += LocHadTopoMETD3PDObject(level) alg += TopoObjMETD3PDObject(level) #-- Trigger if D3PDMakerFlags.DoTrigger(): alg += jetMETTriggerBitsD3PDObject(level) #-- Truth if rec.doTruth(): alg += GenEventD3PDObject(1) #alg += TruthParticleD3PDObject (level) #alg += JetD3PDObject (level, sgkey='Cone4TruthJets' , prefix='Cone4Truth_' ) alg += JetD3PDObject(3, sgkey='AntiKt4TruthJets', prefix='AntiKt4Truth_') #alg += JetD3PDObject (3, sgkey='AntiKt6TruthJets', prefix='AntiKt6Truth_' ) #-- Meta Data alg.MetadataTools += [LBMetadataConfig()] return alg
def egammaD3PD(alg=None, trigalg=None, level=10, file='egamma.root', tuplename='egamma', **kw): preseq = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName()) createxAOD(preseq) if not cfgKeyStore.isInInput('xAOD::ElectronContainer', 'AllElectrons'): preseq += MergeElectrons() # Core algorithm # By default the user of this function should have created an algorithm already. # But for backwards compatibility let the function create its own algorithm if # needed... if not alg: from OutputStreamAthenaPool.MultipleStreamManager import MSMgr alg = MSMgr.NewRootStream(tuplename, file) alg += EventInfoD3PDObject(**_args(level, 'EventInfo', kw)) # Segregate trigger decision flags in a separate tree. if not trigalg: from OutputStreamAthenaPool.MultipleStreamManager import MSMgr trigalg = MSMgr.NewRootStream(tuplename + ':' + tuplename + 'TrigDec', FileName=file, TreeName=tuplename + 'TrigDec') trigalg += EventInfoD3PDObject(0) alg.Stream.trigDecisionTree = trigalg # Add bunch structure metadata. from TriggerD3PDMaker.BunchStructureMetadata \ import addBunchStructureMetadata addBunchStructureMetadata(alg) alg += LArCollisionTimeD3PDObject(**_args(level, 'LArCollisionTime', kw)) alg += ElectronD3PDObject(**_args( level, 'Electron', kw, EgammaJetSignedIPAndPTRel_target='jet_')) alg += PhotonD3PDObject(**_args(level, 'Photon', kw)) # # Additional muon variables for Zg skims. # if not MuonD3PDObject.allBlocknames().has_key("MuonScatteringAngleSignificance"): # from AthenaCommon.AppMgr import ToolSvc # muonScatteringSigTool=None # if hasattr(ToolSvc, "MuonScatteringSigTool"): # muonScatteringSigTool=ToolSvc.MuonScatteringSigTool # from JetTagD3PDMaker import MuonScatteringAngleSignificanceFillerTool # MuonD3PDObject.defineBlock (100, "MuonScatteringAngleSignificance", # MuonScatteringAngleSignificanceFillerTool, # ScatteringSigTool=muonScatteringSigTool) alg += MuonD3PDObject(**_args( 10, 'Muons', kw, sgkey='StacoMuonCollection,Muons', prefix='mu_', include=[ "EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", "L2CBInfoIndex", "L1InfoIndex", "MuonScatteringAngleSignificance" ], exclude=["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], allowMissing=True)) alg += JetD3PDObject( **_args(0, 'Jet', kw, include=['JetQual', 'DQMoments'])) alg += MBTSD3PDObject(**_args(level, 'MBTS', kw)) alg += MBTSTimeD3PDObject(**_args(level, 'MBTSTime', kw)) # alg += MBTSTriggerBitsD3PDObject (**_args (level, 'MBTSTriggerBits', kw)) # alg += ZDCTriggerBitsD3PDObject (**_args (level, 'ZDCTriggerBits', kw)) alg += CollisionDecisionD3PDObject(**_args(level, 'CollisionDecision', kw)) alg += MissingETD3PDObject(**_args(level, 'MissingET', kw, sgkey='MET_Core_AntiKt4EMTopo', prefix='MET_RefFinal_')) if D3PDMakerFlags.DoTrigger(): from TriggerD3PDMaker.TrigDecisionD3PDObject \ import TrigDecisionD3PDObject alg += TrigDecisionD3PDObject(**_args(2, 'TrigDecision', kw)) #TrigEgammaD3PDObjects (alg, **_args (1, 'TrigEgamma', kw, # TrigEMCluster_level = 2)) # from TriggerD3PDMaker.EnergySumROID3PDObject import EnergySumROID3PDObject # from TrigMissingETD3PDMaker.TrigMETD3PDObject import TrigMETD3PDObject # alg += EnergySumROID3PDObject(**_args (level, 'EnergySumROI', kw, # prefix = "trig_L1_esum_", # allowMissing = True)) # # The LVL2 information: # alg += TrigMETD3PDObject(**_args( level, 'TrigMETL2', kw, # prefix = "trig_L2_met_", # sgkey = "HLT_T2MissingET" )) # if cfgKeyStore.isInInputFile( "TrigMissingETContainer", "HLT_L2MissingET_FEB" ): # alg += TrigMETD3PDObject(**_args( level, 'TrigMETL2_FEB', kw, # prefix = "trig_L2_feb_met_", # sgkey = "HLT_L2MissingET_FEB" )) # # The EF information: # alg += TrigMETD3PDObject(**_args ( level, 'TrigMETEF', kw, # prefix = "trig_EF_met_", # sgkey = "HLT_TrigEFMissingET" )) # from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject # alg += BGCodeD3PDObject (**_args (2, 'BGCode', kw)) # May be missing in single-beam data. alg += PrimaryxAODVertexD3PDObject(**_args( 1, 'PrimaryVertex', kw, #allowMissing = True, sgkey=D3PDMakerFlags.VertexSGKey(), prefix='vxp_', storeVertexTrackIndexAssociation=False, storeVertexTrackAssociation=True, storeDiagonalCovarianceAsErrors=True)) if rec.doTruth(): from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject alg += TruthMuonD3PDObject(**_args(level, 'TruthMuon', kw)) alg += TruthEventD3PDObject(**_args(1, 'TruthEvent', kw)) alg += TruthParticleD3PDObject(**_args(level, 'TruthParticle', kw)) # alg.MetadataTools += [LBMetadataConfig()] # if D3PDMakerFlags.FilterCollCand(): # from CaloD3PDMaker.CollisionFilterAlg import CollisionFilterAlg # alg.filterSeq += CollisionFilterAlg (tuplename + '_CollCandFilter') return alg