ATLAS Offline Software
TileGeoG4SDToolConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.Enums import BeamType
6 from ISF_Algorithms.CollectionMergerConfig import CollectionMergerCfg
7 
8 
9 def TileGeoG4SDCfg(flags, name="TileGeoG4SD", **kwargs):
10  bare_collection_name = "TileHitVec"
11  mergeable_collection_suffix = "_G4"
12  merger_input_property = "TileHits"
13  region = "CALO"
14 
15  result, hits_collection_name = CollectionMergerCfg(flags, bare_collection_name, mergeable_collection_suffix, merger_input_property, region)
16  kwargs.setdefault("LogicalVolumeNames", ["Tile::Scintillator"])
17  kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
18 
19  kwargs.setdefault("TileCalculator", result.getPrimaryAndMerge(TileGeoG4SDCalcCfg(flags, [hits_collection_name])) )
20 
21  result.setPrivateTools(CompFactory.TileGeoG4SDTool(name, **kwargs))
22  return result
23 
24 
25 def TileCTBGeoG4SDCfg(flags, name="TileCTBGeoG4SD", **kwargs):
26  kwargs.setdefault("LogicalVolumeNames", ["Tile::Scintillator"])
27  hit_collection_name = ["TileHitVec"]
28  kwargs.setdefault("OutputCollectionNames", hit_collection_name)
29 
30  result = ComponentAccumulator()
31  kwargs.setdefault("TileCalculator", result.getPrimaryAndMerge(TileCTBGeoG4SDCalcCfg(flags, hit_collection_name)) )
32 
33  result.setPrivateTools(CompFactory.TileGeoG4SDTool(name, **kwargs))
34  return result
35 
36 
37 def TileGeoG4SDCalcCfg(flags, hit_collection_name, name="TileGeoG4SDCalc", **kwargs):
38  result = ComponentAccumulator()
39 
40  if flags.Beam.Type is BeamType.Cosmics or flags.Sim.ReadTR:
41  kwargs.setdefault("DeltaTHit", [1])
42  kwargs.setdefault("DoTOFCorrection", False)
43  kwargs.setdefault("DoCalibHitParticleID", flags.Sim.ParticleID )
44  kwargs.setdefault("OutputCollectionNames", hit_collection_name)
45 
46  result.addService(CompFactory.TileGeoG4SDCalc(name, **kwargs), primary=True)
47  return result
48 
49 
50 def TileCTBGeoG4SDCalcCfg(flags, hit_collection_name, name="TileCTBGeoG4SDCalc", **kwargs):
51  result = ComponentAccumulator()
52 
53  kwargs.setdefault("TileTB", True)
54  kwargs.setdefault("DoCalibHitParticleID", flags.Sim.ParticleID )
55  kwargs.setdefault("OutputCollectionNames", hit_collection_name)
56 
57  if flags.Tile.Sim.DeltaTHit != 'NONE':
58  kwargs.setdefault("DeltaTHit", flags.Tile.Sim.DeltaTHit)
59  if flags.Tile.Sim.TimeCut != 'NONE':
60  kwargs.setdefault("TimeCut", flags.Tile.Sim.TimeCut)
61  if flags.Tile.Sim.PlateToCell != 'NONE':
62  kwargs.setdefault("PlateToCell", flags.Tile.Sim.PlateToCell)
63  if flags.Tile.Sim.doTileRaw != 'NONE':
64  kwargs.setdefault("DoTileRow", flags.Tile.Sim.doTileRaw)
65  if flags.Tile.Sim.doTOFCorrection != 'NONE':
66  kwargs.setdefault("DoTOFCorrection", flags.Tile.Sim.doTOFCorrection)
67  if flags.Tile.Sim.doBirk != 'NONE':
68  kwargs.setdefault("DoBirk", flags.Tile.Sim.doBirk)
69  if any([flags.Tile.Sim.OldBirk != 'NONE', flags.Tile.Sim.Birk1 != 'NONE', flags.Tile.Sim.Birk2 != 'NONE']):
70  import AthenaCommon.SystemOfUnits as Units
71  gramsPerMeVcmSq = Units.g / (Units.MeV * Units.cm2)
72  if flags.Tile.Sim.OldBirk != 'NONE':
73  kwargs.setdefault("birk1", 0.0130 * gramsPerMeVcmSq)
74  kwargs.setdefault("birk2", 9.6e-6 * gramsPerMeVcmSq * gramsPerMeVcmSq)
75  if flags.Tile.Sim.Birk1 != 'NONE':
76  kwargs.setdefault("birk1", flags.Tile.Sim.Birk1 * gramsPerMeVcmSq)
77  if flags.Tile.Sim.Birk2 != 'NONE':
78  kwargs.setdefault("birk2", flags.Tile.Sim.Birk2 *gramsPerMeVcmSq * gramsPerMeVcmSq)
79 
80  result.addService(CompFactory.TileGeoG4SDCalc(name, **kwargs), primary=True)
81  return result
SystemOfUnits
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TileGeoG4SDToolConfig.TileGeoG4SDCalcCfg
def TileGeoG4SDCalcCfg(flags, hit_collection_name, name="TileGeoG4SDCalc", **kwargs)
Definition: TileGeoG4SDToolConfig.py:37
TileGeoG4SDToolConfig.TileCTBGeoG4SDCfg
def TileCTBGeoG4SDCfg(flags, name="TileCTBGeoG4SD", **kwargs)
Definition: TileGeoG4SDToolConfig.py:25
TileGeoG4SDToolConfig.TileGeoG4SDCfg
def TileGeoG4SDCfg(flags, name="TileGeoG4SD", **kwargs)
Definition: TileGeoG4SDToolConfig.py:9
TileGeoG4SDToolConfig.TileCTBGeoG4SDCalcCfg
def TileCTBGeoG4SDCalcCfg(flags, hit_collection_name, name="TileCTBGeoG4SDCalc", **kwargs)
Definition: TileGeoG4SDToolConfig.py:50
CollectionMergerConfig.CollectionMergerCfg
def CollectionMergerCfg(flags, bare_collection_name, mergeable_collection_suffix, merger_input_property, region)
Definition: CollectionMergerConfig.py:66