ATLAS Offline Software
Loading...
Searching...
No Matches
ISF_FastCaloSimParametrizationConfig.py
Go to the documentation of this file.
1"""ComponentAccumulator config of tools for ISF_FastCaloSimParametrization
2
3Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4"""
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from IOVDbSvc.IOVDbSvcConfig import addFolders
8def ISF_HitAnalysisCfg(flags, name="ISF_HitAnalysis",
9 NTruthParticles=1, saveAllBranches=False,
10 doG4Hits=False, doClusterInfo=False,
11 outputGeoFileName=None, **kwargs):
12 result = ComponentAccumulator()
13
14 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
15 result.merge( LArGMCfg(flags) )
16 kwargs.setdefault("CaloDetDescrManager", "CaloDetDescrManager")
17
18 from TileConditions.TileSamplingFractionConfig import TileSamplingFractionCondAlgCfg
19 result.merge( TileSamplingFractionCondAlgCfg(flags) )
20 kwargs.setdefault("TileSamplingFraction", "TileSamplingFraction")
21
22 from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
23 kwargs.setdefault("TileCablingSvc", result.getPrimaryAndMerge(TileCablingSvcCfg(flags)))
24
25 kwargs.setdefault("NtupleFileName", 'ISF_HitAnalysis')
26 kwargs.setdefault("GeoFileName", 'ISF_Geometry')
27 histOutputArray = ["ISF_HitAnalysis DATAFILE='%s' OPT='RECREATE'" % (flags.Output.HISTFileName)] # FIXME top level directory name
28 if outputGeoFileName:
29 histOutputArray += ["ISF_Geometry DATAFILE='%s' OPT='RECREATE'" % (outputGeoFileName)] # FIXME top level directory name
30 result.addService(CompFactory.THistSvc(Output=histOutputArray))
31 kwargs.setdefault("NTruthParticles", NTruthParticles)
32
33 from FastCaloSim.FastCaloSimFactoryNew import NITimedExtrapolatorCfg
34 kwargs.setdefault("Extrapolator", result.addPublicTool(result.popToolsAndMerge(NITimedExtrapolatorCfg(flags))))
35 kwargs.setdefault("CaloCoordinateTool", result.addPublicTool(CompFactory.TBCaloCoordinate("TBCaloCoordinate")))
36 kwargs.setdefault("CaloEntrance", 'InDet::Containers::InnerDetector') #FIXME should this be configurable?
37 kwargs.setdefault("FastCaloSimCaloExtrapolation", result.addPublicTool(result.popToolsAndMerge(FastCaloSimCaloExtrapolationCfg(flags))))
38
39 kwargs.setdefault("CaloBoundaryR", 1148.0)
40 kwargs.setdefault("CaloBoundaryZ", 3550.0) #before: 3475.0
41 kwargs.setdefault("CaloMargin", 100) #=10cm
42 kwargs.setdefault("SaveAllBranches", saveAllBranches) #FIXME
43 kwargs.setdefault("DoAllCells", False)
44 kwargs.setdefault("DoLayers", True)
45 kwargs.setdefault("DoLayerSums", True)
46 kwargs.setdefault("DoG4Hits", doG4Hits) #FIXME
47 kwargs.setdefault("DoClusterInfo", doClusterInfo) #FIXME
48 kwargs.setdefault("TimingCut", 999999)
49
50 from AthenaServices.PartPropSvcConfig import PartPropSvcCfg
51 kwargs.setdefault('PartPropSvc', result.getPrimaryAndMerge(PartPropSvcCfg(flags)))
52
53 result.merge(addFolders(flags, ["/Simulation/Parameters", "/Digitization/Parameters"]))
54
55 result.addEventAlgo(CompFactory.ISF_HitAnalysis(name,**kwargs))
56 return result
57
58def FastCaloSimCaloTransportationCfg(flags, name="FastCaloSimCaloTransportation", **kwargs):
59 acc = ComponentAccumulator()
60 from FastCaloSim.FastCaloSimFactoryNew import NITimedExtrapolatorCfg
61 kwargs.setdefault("Extrapolator", acc.addPublicTool(acc.popToolsAndMerge(NITimedExtrapolatorCfg(flags))))
62 kwargs.setdefault("CaloEntrance", 'InDet::Containers::InnerDetector')
63 acc.setPrivateTools(CompFactory.FastCaloSimCaloTransportation(name, **kwargs))
64 return acc
65
66def FastCaloSimCaloExtrapolationCfg(flags, name="FastCaloSimCaloExtrapolation", **kwargs):
67 acc = ComponentAccumulator()
68 kwargs.setdefault("CaloBoundaryR", [1148.0, 120.0, 41.0])
69 kwargs.setdefault("CaloBoundaryZ", [3550.0, 4587.0, 4587.0])
70 kwargs.setdefault("CaloGeometryHelper", acc.addPublicTool(acc.popToolsAndMerge(FastCaloSimGeometryHelperCfg(flags))))
71 kwargs.setdefault("CaloTransportation", acc.addPublicTool(acc.popToolsAndMerge(FastCaloSimCaloTransportationCfg(flags))))
72 acc.setPrivateTools(CompFactory.FastCaloSimCaloExtrapolation(name, **kwargs))
73 return acc
74
75def FastCaloSimGeometryHelperCfg(flags, name="FastCaloSimGeometryHelper", **kwargs):
76 acc = ComponentAccumulator()
77 acc.setPrivateTools(CompFactory.FastCaloSimGeometryHelper(name, **kwargs))
78 return acc
79
80def CaloCellContainerSDCfg(flags, name='CaloCellContainerSD', **kwargs):
81 acc = ComponentAccumulator()
82 kwargs.setdefault ('NoVolumes', True)
83 kwargs.setdefault("OutputCollectionNames", ["DefaultCaloCellContainer"])
84 # Add ISF_FastHitConvertTool, which will also take care
85 # of creating mergable FastCaloSim HIT collections
86 from ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig import FastHitConvertToolCfg
87 kwargs.setdefault("FastHitConvertTool", acc.addPublicTool(acc.popToolsAndMerge(FastHitConvertToolCfg(flags))))
88 acc.setPrivateTools(CompFactory.CaloCellContainerSDTool(name, **kwargs))
89 return acc
90
92 flags.Sim.RecordStepInfo=True
93 from SimulationConfig.SimEnums import VertexSource,LArParameterization,CalibrationRun
94 #No vertex smearing
95 flags.Sim.VertexSource=VertexSource.AsGenerated
96 # Deactivated G4Optimizations
97 #MuonFieldOnlyInCalo
98 flags.Sim.MuonFieldOnlyInCalo=False
99 #NRR
100 flags.Sim.NRRThreshold=False
101 flags.Sim.NRRWeight=False
102 #PRR
103 flags.Sim.PRRThreshold=False
104 flags.Sim.PRRWeight=False
105 #Frozen Showers
106 flags.Sim.LArParameterization=LArParameterization.NoFrozenShowers
107 flags.Sim.CalibrationRun=CalibrationRun.DeadLAr
108 flags.GeoModel.Align.LegacyConditionsAccess = False
109
111 from IOVDbSvc.IOVDbSvcConfig import addOverride
112 cfg.merge(addOverride(flags, "/LAR/BadChannels/BadChannels", tag="LARBadChannelsBadChannels-MC-empty", db="COOLOFL_LAR/OFLP200"))
113 cfg.merge(addOverride(flags, "/TILE/OFL02/STATUS/ADC", tag="TileOfl02StatusAdc-EmptyBCh", db="COOLOFL_TILE/OFLP200"))
114
115
117 # TODO write an OutputStreamConfig.addToRDO method?
118 RDO_ItemList = [
119 "ISF_FCS_Parametrization::FCS_StepInfoCollection#MergedEventSteps",
120 "LArHitContainer#*",
121 "TileHitVector#*"
122 ]
123 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
124 cfg.merge(OutputStreamCfg(flags, "RDO", RDO_ItemList))
125
126 puAlg = cfg.getEventAlgo("StandardPileUpToolsAlg")
127 puAlg.PileUpTools["LArPileUpTool"].CrossTalk = False
128 puAlg.PileUpTools["TileHitVecToCntTool"].HitTimeFlag = 1
129 puAlg.PileUpTools["TileHitVecToCntTool"].usePhotoStatistics = False
130
131 cfg.getEventAlgo("TileDigitsMaker").IntegerDigits = True
132
134
135
137 ESD_ItemList = [
138 "ISF_FCS_Parametrization::FCS_StepInfoCollection#MergedEventSteps",
139 "LArHitContainer#*",
140 "McEventCollection#TruthEvent",
141 "TileHitVector#*",
142 "TrackRecordCollection#CaloEntryLayer",
143 "TrackRecordCollection#MuonEntryLayer"
144 ]
145 from OutputStreamAthenaPool.OutputStreamConfig import addToESD
146 cfg.merge(addToESD(flags, ESD_ItemList))
147
FastCaloSimGeometryHelperCfg(flags, name="FastCaloSimGeometryHelper", **kwargs)
FastCaloSimCaloExtrapolationCfg(flags, name="FastCaloSimCaloExtrapolation", **kwargs)
CaloCellContainerSDCfg(flags, name='CaloCellContainerSD', **kwargs)
ISF_HitAnalysisCfg(flags, name="ISF_HitAnalysis", NTruthParticles=1, saveAllBranches=False, doG4Hits=False, doClusterInfo=False, outputGeoFileName=None, **kwargs)
FastCaloSimCaloTransportationCfg(flags, name="FastCaloSimCaloTransportation", **kwargs)