def LArMgrGeoDetectorToolCfg(ConfigFlags, name='LArMgr', **kwargs): #set up geometry result=LArGMCfg(ConfigFlags) kwargs.setdefault("DetectorName", "LArMgr") #add the GeometryNotifierSvc result.addService(G4GeometryNotifierSvcCfg(ConfigFlags)) kwargs.setdefault("GeometryNotifierSvc", result.getService("G4GeometryNotifierSvc")) result.setPrivateTools(GeoDetectorTool(name, **kwargs)) return result
def LArPileUpToolCfg(flags, name="LArPileUpTool", **kwargs): """Return ComponentAccumulator with configured LArPileUpTool""" acc = LArGMCfg(flags) #The LArPileupTool needs: Noise, fSampl, Pedestal,Shape ADC2MeV # AutoCorrNoise, the list of bad FEBs and the cabling acc.merge(LArADC2MeVCondAlgCfg(flags)) acc.merge(LArBadFebCfg(flags)) if flags.Overlay.DataOverlay: kwargs.setdefault("ShapeKey", "LArShape") if not flags.Digitization.DoCaloNoise: requiredConditons = ["fSampl", "Pedestal", "Shape"] else: requiredConditons = ["Noise", "fSampl", "Pedestal", "Shape"] acc.merge(LArElecCalibDbCfg(flags, requiredConditons)) if not flags.Detector.OverlayLAr: acc.merge(LArAutoCorrNoiseCondAlgCfg(flags)) if "MaskingTool" not in kwargs: maskerTool = acc.popToolsAndMerge( LArBadChannelMaskerCfg(flags, ["deadReadout", "deadPhys"], ToolName="LArRCBMasker")) kwargs["MaskingTool"] = maskerTool # defaults kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise) kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.DoDigiTruth) if flags.Digitization.DoXingByXingPileUp: kwargs.setdefault("FirstXing", -751) kwargs.setdefault("LastXing", 101) if (not flags.Digitization.HighGainFCal) and ( not flags.Detector.OverlayLAr): kwargs.setdefault("HighGainThreshFCAL", 0) if (not flags.Digitization.HighGainEMECIW) and ( not flags.Detector.OverlayLAr): kwargs.setdefault("HighGainThreshEMECIW", 0) kwargs.setdefault("RndmEvtOverlay", flags.Detector.OverlayLAr) if flags.Digitization.PileUpPremixing: kwargs.setdefault("DigitContainer", flags.Overlay.BkgPrefix + "LArDigitContainer_MC") else: kwargs.setdefault( "DigitContainer", "LArDigitContainer_MC") # FIXME - should not be hard-coded # if doing MC+MC overlay if flags.Input.isMC and flags.Detector.OverlayLAr: kwargs.setdefault("isMcOverlay", True) kwargs.setdefault("Nsamples", flags.LAr.ROD.nSamples) kwargs.setdefault("firstSample", flags.LAr.ROD.FirstSample) # cosmics digitization if flags.Beam.Type == "cosmics": kwargs.setdefault("UseTriggerTime", True) CosmicTriggerTimeTool = CompFactory.CosmicTriggerTimeTool kwargs.setdefault("TriggerTimeToolName", CosmicTriggerTimeTool()) # pileup configuration "algorithm" way if not flags.Digitization.DoXingByXingPileUp: if flags.Digitization.Pileup or flags.Detector.OverlayLAr: kwargs.setdefault("PileUp", True) kwargs.setdefault("useLArFloat", useLArFloat(flags)) if useLArFloat(flags): maps = [ "LArHitContainer#LArHitEMB->LArHitFloatContainer#LArHitEMB", "LArHitContainer#LArHitEMEC->LArHitFloatContainer#LArHitEMEC", "LArHitContainer#LArHitHEC->LArHitFloatContainer#LArHitHEC", "LArHitContainer#LArHitFCAL->LArHitFloatContainer#LArHitFCAL" ] AddressRemappingSvc, ProxyProviderSvc = CompFactory.getComps( "AddressRemappingSvc", "ProxyProviderSvc", ) acc.addService( AddressRemappingSvc(TypeKeyOverwriteMaps=maps, ProxyDict="ActiveStoreSvc")) acc.addService(ProxyProviderSvc(ProviderNames=["AddressRemappingSvc"])) kwargs.setdefault("LArHitContainers", []) else: kwargs.setdefault("LArHitFloatContainers", []) if flags.Detector.OverlayLAr: kwargs.setdefault("OnlyUseContainerName", False) if flags.Overlay.DataOverlay: kwargs.setdefault("InputDigitContainer", flags.Overlay.BkgPrefix + "FREE") else: kwargs.setdefault("InputDigitContainer", flags.Overlay.BkgPrefix + "LArDigitContainer_MC") LArPileUpTool = CompFactory.LArPileUpTool acc.setPrivateTools(LArPileUpTool(name, **kwargs)) return acc