3 # JetInputConfig: A helper module providing function to setup algorithms 
    4 # in charge of preparing input sources to jets (ex: EventDensity algo, track 
    5 # or truth selection,...) 
    7 # Author: P-A Delsart                                              # 
    9 from AthenaConfiguration.ComponentFactory 
import CompFactory
 
   16     jetalg = CompFactory.JetAlgorithm(
"jetalg_"+suffix,
 
   22     from InDetUsedInFitTrackDecoratorTool.UsedInVertexFitTrackDecoratorConfig 
import (
 
   23         getUsedInVertexFitTrackDecoratorAlg)
 
   24     trkProperties = parentjetdef._contextDic
 
   27                                                vtxCont= trkProperties[
"Vertices"])
 
   31     truthmod = truthmod 
or "" 
   32     from ParticleJetTools.ParticleJetToolsConfig 
import getCopyTruthJetParticles
 
   39     """  Build truth constituents as in EVTGEN jobs in the r21 config. 
   40     IMPORTANT : this is expected to be temporary, only to reproduce the EVTGEN r21 config with the new config. The definitions should be harmonized with reco-level at some point and this function removed. 
   41     The source for r21 EVTGEN config was in GeneratorFilters/share/common/GenerateTruthJets.py 
   43     truthmod = truthmod 
or "" 
   44     from ParticleJetTools.ParticleJetToolsConfig 
import getCopyTruthJetParticlesGEN
 
   51     from ParticleJetTools.ParticleJetToolsConfig 
import getCopyTruthLabelParticles
 
   58     from TrackVertexAssociationTool.TrackVertexAssociationToolConfig 
import getTTVAToolForReco
 
   59     trkOptions = parentjetdef._contextDic
 
   61                                  HardScatterLinkDeco = 
"",
 
   62                                  WorkingPoint = 
"Nonprompt_All_MaxWeight",
 
   63                                  TrackContName = trkOptions[
'JetTracksQualityCuts']
 
   65     alg = CompFactory.PV0TrackSelectionAlg(
"pv0tracksel_trackjet", 
 
   66                                            InputTrackContainer = trkOptions[
'JetTracksQualityCuts'],
 
   67                                            VertexContainer = trkOptions[
'Vertices'],
 
   68                                            OutputTrackContainer = 
"PV0"+trkOptions[
'JetTracks'],
 
   75     return  CompFactory.JetPFlowSelectionAlg( 
"pflowselalg",
 
   76                                               electronIDToExclude = 
"LHMedium",
 
   77                                               ChargedPFlowInputContainer  = 
"JetETMissChargedParticleFlowObjects",
 
   78                                               NeutralPFlowInputContainer  = 
"JetETMissNeutralParticleFlowObjects",
 
   79                                               ChargedPFlowOutputContainer = 
"GlobalChargedParticleFlowObjects",
 
   80                                               NeutralPFlowOutputContainer = 
"GlobalNeutralParticleFlowObjects" 
   89     return  CompFactory.JetPFlowSelectionAlg( 
"pflowselalg_tauSeedEleRM",
 
   90                                               electronIDToExclude = 
"LHMedium",
 
   91                                               ElectronInputContainer=
"Electrons",
 
   92                                               excludeNeutralElectronFE=
True,
 
   93                                               muonIDToInclude = 
"Loose",
 
   94                                               excludeChargedMuonFE=
False,
 
   95                                               includeChargedMuonFE=
True,
 
   96                                               includeNeutralMuonFE=
True,
 
   97                                               ChargedPFlowInputContainer  = 
"JetETMissChargedParticleFlowObjects",
 
   98                                               NeutralPFlowInputContainer  = 
"JetETMissNeutralParticleFlowObjects",
 
   99                                               ChargedPFlowOutputContainer = 
"GlobalChargedParticleFlowObjects_tauSeedEleRM",
 
  100                                               NeutralPFlowOutputContainer = 
"GlobalNeutralParticleFlowObjects_tauSeedEleRM" 
  104     return  CompFactory.JetPFlowSelectionAlg( 
"pflowselalg_noElectrons",
 
  105                                               electronIDToExclude = 
"LHMedium",
 
  106                                               ElectronInputContainer=
"Electrons",
 
  107                                               excludeNeutralElectronFE=
True,
 
  108                                               ChargedPFlowInputContainer  = 
"JetETMissChargedParticleFlowObjects",
 
  109                                               NeutralPFlowInputContainer  = 
"JetETMissNeutralParticleFlowObjects",
 
  110                                               ChargedPFlowOutputContainer = 
"GlobalChargedParticleFlowObjects_noElectrons",
 
  111                                               NeutralPFlowOutputContainer = 
"GlobalNeutralParticleFlowObjects_noElectrons" 
  115     return  CompFactory.JetPFlowSelectionAlg( 
"pflowselalg_noMuons",
 
  116                                               electronIDToExclude = 
"LHMedium",                                              
 
  117                                               muonIDToExclude = 
"Medium",
 
  118                                               excludeNeutralMuonFE=
True,
 
  119                                               ChargedPFlowInputContainer  = 
"JetETMissChargedParticleFlowObjects",
 
  120                                               NeutralPFlowInputContainer  = 
"JetETMissNeutralParticleFlowObjects",
 
  121                                               ChargedPFlowOutputContainer = 
"GlobalChargedParticleFlowObjects_noMuons",
 
  122                                               NeutralPFlowOutputContainer = 
"GlobalNeutralParticleFlowObjects_noMuons" 
  126     return  CompFactory.JetPFlowSelectionAlg( 
"pflowselalg_noLeptons",
 
  127                                               electronIDToExclude = 
"LHMedium",
 
  128                                               ElectronInputContainer=
"Electrons",
 
  129                                               excludeNeutralElectronFE=
True,
 
  130                                               muonIDToExclude = 
"Medium",
 
  131                                               excludeNeutralMuonFE=
True,
 
  132                                               ChargedPFlowInputContainer  = 
"JetETMissChargedParticleFlowObjects",
 
  133                                               NeutralPFlowInputContainer  = 
"JetETMissNeutralParticleFlowObjects",
 
  134                                               ChargedPFlowOutputContainer = 
"GlobalChargedParticleFlowObjects_noLeptons",
 
  135                                               NeutralPFlowOutputContainer = 
"GlobalNeutralParticleFlowObjects_noLeptons" 
  141     """Function producing an EventShapeAlg to calculate 
  142      median energy density for pileup correction""" 
  144     from .JetRecConfig 
import getPJContName
 
  145     from EventShapeTools.EventDensityConfig 
import configEventDensityTool, getEventShapeName
 
  149     nameprefix = inputspec 
or "" 
  151         f
"EventDensity_{nameprefix}Kt4{pjContName}",
 
  153         InputContainer = pjContName, 
 
  154         OutputContainer = 
getEventShapeName(jetOrConstitdef, nameprefix=nameprefix, suffix=suffix, radius=radius),
 
  156         VoronoiRfact = voronoiRf,
 
  159     eventshapealg = CompFactory.EventDensityAthAlg(
 
  160         f
"EventDensity_{nameprefix}Kt4{pjContName}Alg",
 
  161         EventDensityTool = rhotool )