def getJetTagPrimaryVertexD3PDObject(level=10, **kw): if JetTagD3PDFlags.TrackAssocLabel() == "": TrackD3PDFlags.storeVertexTrackIndexAssociation = False JetTagPrimaryVertexD3PDObject = BuildVertexD3PDObject( _prefix=JetTagD3PDKeys.PrimaryVertexPrefix(), _label=JetTagD3PDKeys.PrimaryVertexGetterLabel(), _sgkey=JetTagD3PDFlags.PrimaryVertexSGKey(), #_object_name='JetTagPrimaryVertexD3PDObject', trackTarget=JetTagD3PDFlags.TrackAssocLabel(), trackPrefix='trk_', trackType='Rec::TrackParticleContainer') return JetTagPrimaryVertexD3PDObject(level=level, **kw)
truthMapKey='ResolvedTracksTruthCollection', detailedTruthMapKey='ResolvedTracksDetailedTruth') alg += ResolvedTracksD3PDObject(8) #PrimaryVertexD3PDObject = BuildVertexD3PDObject(_prefix='vx', # _label='vx_', # _sgkey='VxPrimaryCandidate', # trackTarget='trk', # trackPrefix='trk_', # trackType='Rec::TrackParticleContainer') #alg += PrimaryVertexD3PDObject(8) PrimaryVertexD3PDObjectSi = BuildVertexD3PDObject( _prefix='vx2', _label='vx2_', _sgkey='VxPrimaryCandidate_Pix', trackTarget='myResolvedTrack', trackPrefix='myResolvedTrack_', trackType='TrackCollection') print PrimaryVertexD3PDObjectSi alg += PrimaryVertexD3PDObjectSi(8) #include("myD3PDObject.py") alg += PrimaryVertexD3PDObject(8) if InDetFlags.doVtxD3PD(): #alg += TrackParticleD3PDObject(levelOfDetail) #alg += PrimaryVertexD3PDObject(10) #alg += PrimaryVertexD3PDObject(levelOfDetail) pass
def VertexGroupD3PD(alg=None, file=VertexD3PDAnalysisKeys.D3PDFileName(), treeName=VertexD3PDAnalysisKeys.D3PDTreeName(), **kw): print '[TrackD3PDMaker.VertexGroupD3PD] Vertex group D3PD settings:' print 'VertexD3PDAnalysisFlags' print VertexD3PDAnalysisFlags print 'VertexD3PDAnalysisKeys' print VertexD3PDAnalysisKeys if not alg: ## Create a new algorithm from OutputStreamAthenaPool.MultipleStreamManager import MSMgr alg = MSMgr.NewRootStream(treeName, file) ## General event information (custom options prefix: 'ei_') if VertexD3PDAnalysisFlags.useEventInfo(): from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject alg += EventInfoD3PDObject(**_args('ei_', kw, level=0, prefix='ei_')) ## Trigger information (custom options prefix: 'trig_') if VertexD3PDAnalysisFlags.useTrigger(): from TriggerJobOpts.TriggerConfigGetter import TriggerConfigGetter cfg = TriggerConfigGetter("ReadPool") from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject alg += TrigDecisionD3PDObject(**_args('trig_', kw, level=2)) addTrigConfMetadata(alg) if VertexD3PDAnalysisFlags.useTriggerRaw(): from TriggerJobOpts.TriggerConfigGetter import TriggerConfigGetter cfg = TriggerConfigGetter("ReadPool") from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata #Setup custom D3PD object with raw trigger info only (e.g. calibration_vdM streams) from D3PDMakerCoreComps.D3PDObject import make_Void_D3PDObject import TriggerD3PDMaker TrigDecisionD3PDObjectRaw = make_Void_D3PDObject( "trigRaw_", "TrigDecisionD3PDObjectRaw", default_name="TrigDecisionFillerRaw") if not VertexD3PDAnalysisFlags.useTrigger(): TrigDecisionD3PDObjectRaw.defineBlock( 0, "TriggerRawInfo", TriggerD3PDMaker.TrigDecisionFillerTool, SaveLVL1Raw=True, SaveHLTRaw=True, SaveBGCode=True) else: TrigDecisionD3PDObjectRaw.defineBlock( 0, "TriggerRawInfo", TriggerD3PDMaker.TrigDecisionFillerTool, SaveHLTRaw=True, SaveBGCode=True) #Finally add object to algorithms alg += TrigDecisionD3PDObjectRaw(**_args('trig_', kw, level=0)) if not VertexD3PDAnalysisFlags.useTrigger(): #unless we've already added it, add meta-data as well addTrigConfMetadata(alg) ## Beam background information (custom options prefix: 'bkg_') if VertexD3PDAnalysisFlags.useBackgroundWord(): from BackgroundD3PDMaker.BackgroundWordD3PDObject import BackgroundWordD3PDObject alg += BackgroundWordD3PDObject(**_args('bkg_', kw, level=0)) ## Tracks and V0 information (custom options prefix: 'trk_', and 'v0_') if VertexD3PDAnalysisFlags.useTracks(): labelDefaultVtx = VertexD3PDAnalysisKeys.LabelDefaultVtx() prefixDefaultVtx = labelDefaultVtx + '_' #Add trailing '_' import TrackD3PDMaker from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags from TrackD3PDMaker.TrackD3PDObject import TrackD3PDObject from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags from TruthD3PDMaker.TruthD3PDMakerFlags import TruthD3PDFlags from TruthD3PDMaker.TruthD3PDMakerKeys import TruthD3PDKeys VtxD3PD_Track_Exclude = ['vx_weight'] TrackD3PDMaker.PerigeeUnbiasedIPAtPVFillerTool.DoBiased = False #Switch off biased perigee TrackParticleD3PDObjectForVertex = TrackD3PDObject( _label='trk', _prefix='trk_', _sgkey=D3PDMakerFlags.TrackSGKey(), _object_name='TrackParticleD3PDObjectForVertex', typeName='Rec::TrackParticleContainer', vertexTarget=labelDefaultVtx, vertexPrefix=prefixDefaultVtx, vertexSGKey='VxPrimaryCandidate', truthTarget=TruthD3PDFlags.GenParticleAssocLabel(), truthPrefix=TruthD3PDKeys.GenParticlePrefix(), detailedTruthPrefix='', # 'mc_detailed_' SGKeyForTruth=D3PDMakerFlags.TrackSGKey(), truthMapKey='TrackParticleTruthCollection', detailedTruthMapKey='', #'DetailedTrackTruth' flags=TrackD3PDFlags) alg += TrackParticleD3PDObjectForVertex( **_args('trk_', kw, level=8, exclude=VtxD3PD_Track_Exclude)) if VertexD3PDAnalysisFlags.useSecondaryVertex(): from TrackD3PDMaker.V0D3PDObject import V0D3PDObject alg += V0D3PDObject(**_args('v0_', kw, level=10)) ## Store beamspot information (custom option perfix: 'bs_') if VertexD3PDAnalysisFlags.useBeamspot(): from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject alg += BeamSpotD3PDObject(**_args('bs_', kw, level=0)) ## Store vertex information (custom options prefix: 'vtx_' or 'vtx' for BuildVertexD3PDObject) from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject from TrackD3PDMaker.VertexD3PDObject import BuildVertexD3PDObject from InDetRecExample.InDetKeys import InDetKeys from InDetRecExample.InDetJobProperties import InDetFlags #First dump existing content labelDefaultVtx = VertexD3PDAnalysisKeys.LabelDefaultVtx() prefixDefaultVtx = labelDefaultVtx + '_' #Add trailing '_' VtxDefaultD3PDObj = BuildVertexD3PDObject( **_args('vtx', kw, _prefix=prefixDefaultVtx, _label=labelDefaultVtx, _sgkey=InDetKeys.PrimaryVertices(), trackTarget='trk', trackPrefix='trk_', trackType='Rec::TrackParticleContainer')) alg += VtxDefaultD3PDObj(**_args('vtx_', kw, level=10)) #Then also dump the other vertex collections if VertexD3PDAnalysisFlags.useAllVertexCollections: #Use non BC and split collections (sorry, no customization of parameters here) if not InDetFlags.doSplitVertexFindingForMonitoring(): #raise NameError('Requesting split vertices but algorith has not run!') #pass print( '[TrackD3PDMaker.VertexGroupD3PD] WARNING: Requested split vertices, but algorithm has not run! Skipped.' ) else: SplitPrimaryVertexD3PDObject = BuildVertexD3PDObject( _prefix='vxsplit_', _label='vxsplit', _sgkey=InDetKeys.PrimaryVerticesSplitStream(), trackTarget='trk', trackPrefix='trk_', trackType='Rec::TrackParticleContainer') alg += SplitPrimaryVertexD3PDObject(8) #Then store also non beamspot constrained ones if not InDetFlags.doVertexFindingForMonitoring(): #raise NameError('Requesting NBC vertices but algorith has not run!') #pass print( '[TrackD3PDMaker.VertexGroupD3PD] WARNING: Requested non beamspot constrained vertices, but algorithm has not run! Skipped.' ) else: NoBeamConstraintPrimaryVertexD3PDObject = BuildVertexD3PDObject( _prefix='vxnbc_', _label='vxnbc', _sgkey=InDetKeys.PrimaryVerticesWithoutBeamConstraint(), trackTarget='trk', trackPrefix='trk_', trackType='Rec::TrackParticleContainer') alg += NoBeamConstraintPrimaryVertexD3PDObject(8) ## Store truth-level information (custom options prefix: 'tuthVtx_', 'truthEvt_', 'truthPart_') if VertexD3PDAnalysisFlags.useTruth(): from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool trackGenObjectsFilterTool = D3PD__GenObjectsFilterTool( "trackGenObjectsFilterTool") from AthenaCommon.AppMgr import ToolSvc ToolSvc += trackGenObjectsFilterTool if (VertexD3PDAnalysisFlags.filterTightTruth()): trackGenObjectsFilterTool.SelectTruthTracks = True trackGenObjectsFilterTool.PtMin = VertexD3PDAnalysisKeys.TruthTrackCutPtMin( ) trackGenObjectsFilterTool.EtaMax = VertexD3PDAnalysisKeys.TruthTrackCutEtaMax( ) trackGenObjectsFilterTool.RemoveEmptyEvents = True trackGenObjectsFilterTool.RemoveDummyEvents = True trackGenObjectsFilterTool.RemoveInTimePileUp = False trackGenObjectsFilterTool.Remove2BCPileUp = True trackGenObjectsFilterTool.Remove800nsPileUp = True trackGenObjectsFilterTool.RemoveCavernBkg = False trackGenObjectsFilterTool.AddOnlyFirstVertex = VertexD3PDAnalysisKeys.TruthAddOnlyFirstVertex( ) else: #Use a more inclusive truth policy trackGenObjectsFilterTool.SelectTruthTracks = False trackGenObjectsFilterTool.PtMin = VertexD3PDAnalysisKeys.TruthTrackCutPtMin( ) trackGenObjectsFilterTool.EtaMax = VertexD3PDAnalysisKeys.TruthTrackCutEtaMax( ) trackGenObjectsFilterTool.RemoveEmptyEvents = True trackGenObjectsFilterTool.RemoveDummyEvents = True trackGenObjectsFilterTool.AddOnlyFirstVertex = VertexD3PDAnalysisKeys.TruthAddOnlyFirstVertex( ) from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject alg += GenEventD3PDObject( **_args('truthEvt_', kw, level=10, filter=trackGenObjectsFilterTool, pileup_CollectionGetterRegistry=alg.name() + '_CollectionGetterRegistry')) from TruthD3PDMaker.GenVertexD3PDObject import GenVertexD3PDObject alg += GenVertexD3PDObject(**_args( 'truthVtx_', kw, level=1, filter=trackGenObjectsFilterTool)) from TruthD3PDMaker.GenParticleD3PDObject import GenParticleD3PDObject alg += GenParticleD3PDObject(**_args( 'truthPart_', kw, level=10, filter=trackGenObjectsFilterTool)) from TruthD3PDMaker.GenParticleD3PDObject import GenTruthTrackD3PDObject alg += GenTruthTrackD3PDObject(**_args('truthTrack_', kw, level=0)) ## Dump higher level objects # Missing Energy (custom options prefix with VertexD3PDAnalysisKeys.MetCollections+'_') if VertexD3PDAnalysisFlags.useMET(): for MET in VertexD3PDAnalysisKeys.MetCollections(): VtxD3PD_Met_Key = MET VtxD3PD_Met_Prefix = MET.replace('_', '') + '_' VtxD3PD_Met_Level = 0 #Only basic info VtxD3PD_Met_Exclude = ['MET_Regions', 'L1_', 'L2_', 'EF_'] from MissingETD3PDMaker.MissingETD3PDObject import RefFinalMETD3PDObject VtxD3PD_Met_Obj = RefFinalMETD3PDObject( **_args(MET + '_', kw, level=VtxD3PD_Met_Level, sgkey=VtxD3PD_Met_Key, prefix=VtxD3PD_Met_Prefix, exclude=VtxD3PD_Met_Exclude)) alg += VtxD3PD_Met_Obj #Muons (custom options prefix VtxD3PD_Muon_Prefix -- see below [e.g. muid_, staco_, ...]) if VertexD3PDAnalysisFlags.useMuons(): from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject for Muon in VertexD3PDAnalysisKeys.MuonCollections(): VtxD3PD_Muon_Key = Muon VtxD3PD_Muon_Prefix = Muon + '_' if VtxD3PD_Muon_Key == 'MuidMuonCollection': VtxD3PD_Muon_Prefix = 'muid_' elif VtxD3PD_Muon_Key == 'StacoMuonCollection': VtxD3PD_Muon_Prefix = 'staco_' VtxD3PD_Muon_Level = 0 #Only basic info VtxD3PD_Muon_Exclude = [ 'EFCBInfo', 'EFMGInfo', 'EFMEInfo', 'L2CBInfo', 'L1Info', 'L1_', 'L2_', 'EF_' ] VtxD3PD_Muon_Obj = MuonD3PDObject( **_args(VtxD3PD_Muon_Prefix, kw, level=VtxD3PD_Muon_Level, sgkey=VtxD3PD_Muon_Key, prefix=VtxD3PD_Muon_Prefix, allowMissing=True, exclude=VtxD3PD_Muon_Exclude)) alg += VtxD3PD_Muon_Obj #Electrons (custom options prefix: 'el_') if VertexD3PDAnalysisFlags.useElectrons(): from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject alg += ElectronD3PDObject(**_args('el_', kw, prefix='el_', level=0)) #Photons (custom options prefix: 'ph_') if VertexD3PDAnalysisFlags.usePhotons(): from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject alg += PhotonD3PDObject(**_args('ph_', kw, prefix='ph_', level=0)) #Jets, JVF, b-jets (custom options prefix: 'jet_') if VertexD3PDAnalysisFlags.useJets(): from JetD3PDMaker.JetD3PDObject import JetD3PDObject from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys from JetTagD3PDMaker.AddBTagD3PDInfo import addBTagInfoToJetObject addBTagInfoToJetObject(JetD3PDObject, btagLevelOffset=0) VtxD3PD_Jet_Include = [ 'Kinematics', 'JetVertexFraction', 'JVtx', 'EMFraction', 'TrueFlavorComponents', JetTagD3PDKeys.BTagWeightsBlockName() ] for JET in VertexD3PDAnalysisKeys.JetCollections(): VtxD3PD_Jet_Prefix = JET.replace('_', '') + '_' if len(VertexD3PDAnalysisKeys.JetCollections()) == 1: #only 1 element, simplify prefix VtxD3PD_Jet_Prefix = 'jet_' alg += JetD3PDObject(**_args('jet_', kw, sgkey=JET, prefix=VtxD3PD_Jet_Prefix, level=0, include=VtxD3PD_Jet_Include)) #Taus if VertexD3PDAnalysisFlags.useTaus(): from TauD3PDMaker.TauD3PDObject import TauD3PDObject VtxD3PD_Tau_Include = ['TauPriVtx'] alg += TauD3PDObject(**_args( 'tau_', kw, prefix='tau_', level=0, include=VtxD3PD_Tau_Include)) ## Return algorithm return alg
InDetTrackD3PDMaker += V0D3PDObject(10) if InDetFlags.doPixelTrkD3PD(): from TrackD3PDMaker.TrackD3PDObject import PixelTrackD3PDObject InDetTrackD3PDMaker += PixelTrackD3PDObject(levelOfDetail) if InDetFlags.doSctTrkD3PD(): from TrackD3PDMaker.TrackD3PDObject import SCTTrackD3PDObject InDetTrackD3PDMaker += SCTTrackD3PDObject(levelOfDetail) if InDetFlags.doTrtTrkD3PD(): from TrackD3PDMaker.TrackD3PDObject import TRTTrackD3PDObject InDetTrackD3PDMaker += TRTTrackD3PDObject(levelOfDetail) if InDetFlags.doVtxMonitoringD3PD(): from TrackD3PDMaker.VertexD3PDObject import BuildVertexD3PDObject BeamConstraintPrimaryVertexD3PDObject = BuildVertexD3PDObject(_prefix='vxbc_', _label='vxbc', _sgkey=InDetKeys.PrimaryVertices(), trackTarget='trk', trackPrefix='trk_', trackType='Rec::TrackParticleContainer') InDetTrackD3PDMaker += BeamConstraintPrimaryVertexD3PDObject(8) SplitPrimaryVertexD3PDObject = BuildVertexD3PDObject(_prefix='vxsplit_', _label='vxsplit', _sgkey=InDetKeys.PrimaryVerticesSplitStream(), trackTarget='trk', trackPrefix='trk_', trackType='Rec::TrackParticleContainer') InDetTrackD3PDMaker += SplitPrimaryVertexD3PDObject(8) NoBeamConstraintPrimaryVertexD3PDObject = BuildVertexD3PDObject(_prefix='vxnbc_', _label='vxnbc', _sgkey=InDetKeys.PrimaryVerticesWithoutBeamConstraint(),
def MinBiasD3PD(d3pdalg=None, file='minbias.root', tuplename='MinBiasD3PD', streamname='d3pdstream', **kw): # MinBias flags from MinBiasD3PDMaker.MinBiasD3PDMakerFlags import minbiasD3PDflags from IOVDbSvc.CondDB import conddb from AthenaCommon.GlobalFlags import globalflags if minbiasD3PDflags.doPixelTracklets(): MinBiasD3PDStream_msg.info( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TRACKLETS") pass ## Don't do truth on data if globalflags.DataSource == 'data': minbiasD3PDflags.doMBTruth = False pass #-------------------------------------------------------------- # Configure Beam spot service #-------------------------------------------------------------- # from AthenaCommon.GlobalFlags import globalflags # if globalflags.DataSource == 'data': # include("InDetBeamSpotService/BeamCondSvc.py") # conddb.addOverride("/Indet/Beampos", #minbiasD3PDflags.BSDBFolderName()) # pass #-------------------------------------------------------------- # Configure the MinBiasD3PDMaker #-------------------------------------------------------------- import TrackD3PDMaker import TrigMbD3PDMaker import TriggerD3PDMaker import D3PDMakerCoreComps import EventCommonD3PDMaker ## Event Info from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject ## Trigger part from TrigMbD3PDMaker.BcmRdoD3PDObject import BcmRdoD3PDObject from TrigMbD3PDMaker.CtpRdoD3PDObject import CtpRdoD3PDObject from TrigMbD3PDMaker.CtpDecisionD3PDObject import CtpDecisionD3PDObject from TrigMbD3PDMaker.MbtsContainerD3PDObject import MbtsContainerD3PDObject from TrigMbD3PDMaker.MbtsLvl2D3PDObject import MbtsLvl2D3PDObject from TrigMbD3PDMaker.SpLvl2D3PDObject import SpLvl2D3PDObject from TrigMbD3PDMaker.TrtLvl2D3PDObject import TrtLvl2D3PDObject from TrigMbD3PDMaker.TrkCntsEfD3PDObject import TrkCntsEfD3PDObject from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata ## Tracking part #-- TrackD3PDMaker Flags from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags TrackD3PDFlags.doTruth.set_Value_and_Lock(minbiasD3PDflags.doMBTruth()) TrackD3PDFlags.storeDiagonalCovarianceAsErrors.set_Value_and_Lock(True) TrackD3PDFlags.storeHitTruthMatching.set_Value_and_Lock( minbiasD3PDflags.doMBTruth()) TrackD3PDFlags.storeDetailedTruth.set_Value_and_Lock( minbiasD3PDflags.doMBTruth()) TrackD3PDFlags.storePullsAndResiduals.set_Value_and_Lock(False) TrackD3PDFlags.storeBLayerHitsOnTrack.set_Value_and_Lock(False) TrackD3PDFlags.storePixelHitsOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeSCTHitsOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeTRTHitsOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeBLayerOutliersOnTrack.set_Value_and_Lock(False) TrackD3PDFlags.storePixelOutliersOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeSCTOutliersOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeTRTOutliersOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeBLayerHolesOnTrack.set_Value_and_Lock(False) TrackD3PDFlags.storePixelHolesOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeSCTHolesOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeTRTHolesOnTrack.set_Value_and_Lock(True) TrackD3PDFlags.storeVertexAssociation.set_Value_and_Lock(False) TrackD3PDFlags.storeTrackPredictionAtBLayer.set_Value_and_Lock(True) TrackD3PDFlags.storeTrackInfo.set_Value_and_Lock(True) TrackD3PDFlags.storeTrackFitQuality.set_Value_and_Lock(True) TrackD3PDFlags.storeTrackSummary.set_Value_and_Lock(True) TrackD3PDFlags.storeTrackSummary.IDHits = True TrackD3PDFlags.storeTrackSummary.IDHoles = True TrackD3PDFlags.storeTrackSummary.IDSharedHits = True TrackD3PDFlags.storeTrackSummary.IDOutliers = True TrackD3PDFlags.storeTrackSummary.PixelInfoPlus = False TrackD3PDFlags.storeTrackSummary.SCTInfoPlus = False TrackD3PDFlags.storeTrackSummary.TRTInfoPlus = False TrackD3PDFlags.storeTrackSummary.InfoPlus = False TrackD3PDFlags.storeTrackSummary.MuonHits = False TrackD3PDFlags.storeTrackSummary.MuonHoles = False TrackD3PDFlags.storeTrackSummary.ExpectBLayer = True TrackD3PDFlags.storeTrackSummary.HitSum = True TrackD3PDFlags.storeTrackSummary.HoleSum = True TrackD3PDFlags.storeTrackSummary.HitPattern = True TrackD3PDFlags.storeTrackSummary.SiHits = False TrackD3PDFlags.storeTrackSummary.TRTRatio = False TrackD3PDFlags.storeTrackSummary.PixeldEdx = True # HI TrackD3PDFlags.storeTrackSummary.ElectronPID = False TrackD3PDFlags.trackParametersAtGlobalPerigeeLevelOfDetails.set_Value_and_Lock( 3) TrackD3PDFlags.trackParametersAtPrimaryVertexLevelOfDetails.set_Value_and_Lock( 3) TrackD3PDFlags.trackParametersAtBeamSpotLevelOfDetails.set_Value_and_Lock( 3) TrackD3PDFlags.storeTrackUnbiasedIPAtPV.set_Value_and_Lock(False) TrackD3PDFlags.storeTrackMomentum.set_Value_and_Lock(True) TrackD3PDFlags.vertexPositionLevelOfDetails.set_Value_and_Lock(3) TrackD3PDFlags.storeVertexFitQuality.set_Value_and_Lock(True) TrackD3PDFlags.storeVertexKinematics.set_Value_and_Lock(True) TrackD3PDFlags.storeVertexPurity.set_Value_and_Lock( minbiasD3PDflags.doMBTruth()) TrackD3PDFlags.storeVertexTrackAssociation.set_Value_and_Lock(False) TrackD3PDFlags.storeVertexTrackIndexAssociation.set_Value_and_Lock(True) #-- Enhanced vertex info configuration from TrackD3PDMaker.VertexD3PDAnalysisFlags import VertexD3PDAnalysisFlags VertexD3PDAnalysisFlags.useEventInfo = False # No Evt Info reread in Vtx VertexD3PDAnalysisFlags.useTruth = minbiasD3PDflags.doMBTruth() VertexD3PDAnalysisFlags.useAllVertexCollections = True VertexD3PDAnalysisFlags.useTracks = False #Already included in the MinBias D3PD VertexD3PDAnalysisFlags.useBeamspot = False # Already included in the MinBias D3PD VertexD3PDAnalysisFlags.useBackgroundWord = True # Components mostly included, just to be safe VertexD3PDAnalysisFlags.useTrigger = False # Already included in the MinBias D3PD VertexD3PDAnalysisFlags.useSecondaryVertex = False VertexD3PDAnalysisFlags.useMET = False VertexD3PDAnalysisFlags.useElectrons = False VertexD3PDAnalysisFlags.useMuons = False VertexD3PDAnalysisFlags.usePhotons = False VertexD3PDAnalysisFlags.useJets = False VertexD3PDAnalysisFlags.useTaus = False #-- TrackD3PDMaker configuration from TrackD3PDMaker.TruthTrackD3PDObject import TruthTrackD3PDObject from TrackD3PDMaker.TruthVertexD3PDObject import TruthVertexD3PDObject from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject from TrackD3PDMaker.TrackD3PDObject import PixelTrackD3PDObject from TrackD3PDMaker.TrackD3PDObject import SCTTrackD3PDObject from TrackD3PDMaker.TrackD3PDObject import TRTTrackD3PDObject from TrackD3PDMaker.TrackD3PDObject import ResolvedTracksD3PDObject from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject from TrackD3PDMaker.VertexD3PDObject import BuildVertexD3PDObject SecVertexD3PDObject = BuildVertexD3PDObject( _prefix='secVx_', _label='secVx', _sgkey='SecVertices', trackTarget='trk', trackPrefix='trk_', trackType='Rec::TrackParticleContainer') from TrackD3PDMaker.V0D3PDObject import V0D3PDObject from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject ## MinBias part from MinBiasD3PDMaker.UnassociatedHitsD3PDObject import UnassociatedHitsD3PDObject if not d3pdalg: d3pdalg = MSMgr.NewRootStream(StreamName=streamname, FileName=file, TreeName=tuplename) ## Add blocks to the tree # d3pdalg += EventInfoD3PDObject(10, prefix='ei_') d3pdalg += EventInfoD3PDObject(10) d3pdalg += TrackParticleD3PDObject(10) d3pdalg += PrimaryVertexD3PDObject(10) if minbiasD3PDflags.doBeamSpot(): d3pdalg += BeamSpotD3PDObject(10) if minbiasD3PDflags.doUnassociatedHits(): d3pdalg += UnassociatedHitsD3PDObject(10) if minbiasD3PDflags.doTrigger(): d3pdalg += CtpRdoD3PDObject(10) d3pdalg += CtpDecisionD3PDObject(10) d3pdalg += MbtsContainerD3PDObject(10) d3pdalg += TrigDecisionD3PDObject(10) addTrigConfMetadata(d3pdalg) if minbiasD3PDflags.doDetailedTrigger(): d3pdalg += BcmRdoD3PDObject(10) d3pdalg += MbtsLvl2D3PDObject(10) d3pdalg += SpLvl2D3PDObject(10) d3pdalg += TrtLvl2D3PDObject(10) d3pdalg += TrkCntsEfD3PDObject(10) if minbiasD3PDflags.doMBTruth(): d3pdalg += TruthTrackD3PDObject(10) d3pdalg += TruthVertexD3PDObject(10) if minbiasD3PDflags.doPixelTracklets(): d3pdalg += PixelTrackD3PDObject(10) if minbiasD3PDflags.doSCTTracklets(): d3pdalg += SCTTrackD3PDObject(10) if minbiasD3PDflags.doTRTTracklets(): d3pdalg += TRTTrackD3PDObject(10) if minbiasD3PDflags.doResolvedTracklets(): d3pdalg += ResolvedTracksD3PDObject(10) if minbiasD3PDflags.doV0s(): d3pdalg += V0D3PDObject(10, sgkey="V0Candidates") d3pdalg += SecVertexD3PDObject(10) if minbiasD3PDflags.doLucid(): from TrigMbD3PDMaker.LucidRawD3PDObject import LucidRawD3PDObject d3pdalg += LucidRawD3PDObject(10) if globalflags.DataSource == 'geant4': from TrigMbD3PDMaker.LucidDigitD3PDObject import LucidDigitD3PDObject d3pdalg += LucidDigitD3PDObject(10) if minbiasD3PDflags.doZDC() and globalflags.DataSource == "data": ##ZDC object from ForwardDetectorsD3PDMaker.ZdcD3PDObject import ZdcD3PDObject from ForwardDetectorsD3PDMaker.ZdcDigitsD3PDObject import ZdcDigitsD3PDObject d3pdalg += ZdcD3PDObject(10) d3pdalg += ZdcDigitsD3PDObject(10) from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject d3pdalg += MBTSTimeD3PDObject(10) from TrackD3PDMaker.VertexGroupD3PD import VertexGroupD3PD VertexGroupD3PD(d3pdalg) def _args(level, name, kwin, **kw): kw = kw.copy() kw['level'] = level for (k, v) in kwin.items(): if k.startswith(name + '_'): kw[k[len(name) + 1:]] = v return kw #-------------------------------------------------------------- # Clusters #-------------------------------------------------------------- from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject if minbiasD3PDflags.doClusterHad(): # define clusters from CaloD3PDMaker import ClusterMomentFillerTool as CMFT myMoments = [ CMFT.CENTER_LAMBDA, 'center_lambda', CMFT.LATERAL, 'lateral', CMFT.LONGITUDINAL, 'longitudinal', CMFT.ISOLATION, 'isolation', CMFT.SIGNIFICANCE, 'significance', CMFT.CELL_SIGNIFICANCE, 'cellSignificance', CMFT.CELL_SIG_SAMPLING, 'cellSigSampling' ] d3pdalg += ClusterD3PDObject(**_args(0, 'CaloCalTopoCluster', kw, prefix='cl_had_', include='Moments', Kinematics_WriteE=True, Moments_Moments=myMoments)) if minbiasD3PDflags.doClusterEM(): d3pdalg += ClusterD3PDObject(**_args(0, 'CaloCalTopoCluster', kw, prefix='cl_em_', Kinematics_WriteE=True, Kinematics_SignalState=0)) #-------------------------------------------------------------- # Alfa #-------------------------------------------------------------- if globalflags.DataSource == "data": IOVDbSvc = Service("IOVDbSvc") from IOVDbSvc.CondDB import conddb ####for other possible servers see dbreplica.config in Athena # #installation # IOVDbSvc.dbConnection="oracle://ATLAS_COOLPROD;schema=ATLAS_COOLOFL_DCS;dbname=COMP200" if not conddb.folderRequested('/RPO/DCS/BLM'): conddb.addFolder("DCS_OFL", "/RPO/DCS/BLM") if not conddb.folderRequested('/RPO/DCS/FECONFIGURATION'): conddb.addFolder("DCS_OFL", "/RPO/DCS/FECONFIGURATION") if not conddb.folderRequested('/RPO/DCS/HVCHANNEL'): conddb.addFolder("DCS_OFL", "/RPO/DCS/HVCHANNEL") if not conddb.folderRequested('/RPO/DCS/LOCALMONITORING'): conddb.addFolder("DCS_OFL", "/RPO/DCS/LOCALMONITORING") if not conddb.folderRequested('/RPO/DCS/MOVEMENT'): conddb.addFolder("DCS_OFL", "/RPO/DCS/MOVEMENT") if not conddb.folderRequested('/RPO/DCS/RADMON'): conddb.addFolder("DCS_OFL", "/RPO/DCS/RADMON") if not conddb.folderRequested('/RPO/DCS/TRIGGERRATES'): conddb.addFolder("DCS_OFL", "/RPO/DCS/TRIGGERRATES") if not conddb.folderRequested('/RPO/DCS/TRIGGERSETTINGS'): conddb.addFolder("DCS_OFL", "/RPO/DCS/TRIGGERSETTINGS") if jobproperties.Rec.doAlfa: from ForwardDetectorsD3PDMaker.AlfaD3PDObject import AlfaD3PDObject # d3pdalg += EventInfoD3PDObject(10) d3pdalg += AlfaD3PDObject(0) from ForwardDetectorsD3PDMaker import AlfaEventHeaderFillerTool if globalflags.DataSource == "data": AlfaEventHeaderFillerTool.DataType = 1 from ForwardDetectorsD3PDMaker.AlfaDCSMetadata import addAlfaDcsMetadata addAlfaDcsMetadata(d3pdalg) elif globalflags.DataSource == "geant4": AlfaEventHeaderFillerTool.DataType = 0
alg += TrackParticleD3PDObject(1) alg += PrimaryVertexD3PDObject(index) index = 3 #alg += PixelTrackD3PDObject(index) #alg += SCTTrackD3PDObject(index) #alg += TRTTrackD3PDObject(index) #alg += ResolvedTracksD3PDObject(index) index = 8 from TrackD3PDMaker.VertexD3PDObject import BuildVertexD3PDObject PrimaryVertexD3PDObjectPix = BuildVertexD3PDObject( _prefix='vxPix_', _label='vxPix', _sgkey='VxPrimaryCandidate_Pix_AdaptiveFinding', trackTarget='trkPix', trackPrefix='trkPix_', trackType='TrackCollection') alg += PrimaryVertexD3PDObjectPix(index) PrimaryVertexD3PDObjectSCT = BuildVertexD3PDObject( _prefix='vxSCT_', _label='vxSCT', _sgkey='VxPrimaryCandidate_SCT_AdaptiveFinding', trackTarget='trkSCT', trackPrefix='trkSCT_', trackType='TrackCollection') alg += PrimaryVertexD3PDObjectSCT(index) PrimaryVertexD3PDObjectRes = BuildVertexD3PDObject( _prefix='vxSi_',
TrackD3PDFlags.storeVertexTrackAssociation.set_Value_and_Lock(False) TrackD3PDFlags.storeVertexTrackIndexAssociation.set_Value_and_Lock(True) #-- TrackD3PDMaker configuration from TrackD3PDMaker.TruthTrackD3PDObject import TruthTrackD3PDObject from TrackD3PDMaker.TruthVertexD3PDObject import TruthVertexD3PDObject from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject from TrackD3PDMaker.TrackD3PDObject import PixelTrackD3PDObject from TrackD3PDMaker.TrackD3PDObject import SCTTrackD3PDObject from TrackD3PDMaker.TrackD3PDObject import TRTTrackD3PDObject from TrackD3PDMaker.TrackD3PDObject import ResolvedTracksD3PDObject from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject from TrackD3PDMaker.VertexD3PDObject import BuildVertexD3PDObject SecVertexD3PDObject = BuildVertexD3PDObject( _prefix='secVx_', _label='secVx', _sgkey='SecVertices', trackTarget='trk', trackPrefix='trk_', trackType='Rec::TrackParticleContainer') from TrackD3PDMaker.V0D3PDObject import V0D3PDObject from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject ## MinBias part from MinBiasD3PDMaker.UnassociatedHitsD3PDObject import UnassociatedHitsD3PDObject ## D3PD Maker alg alg = D3PDMakerCoreComps.MakerAlg('MinBiasTree', topSequence, MinBiasD3PDFileName) ## Add blocks to the tree alg += EventInfoD3PDObject(10, prefix='ei_')