ATLAS Offline Software
Loading...
Searching...
No Matches
RunMaterialMapping.py
Go to the documentation of this file.
1#!/usr/bin/env python
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3"""
4Run material mapping
5"""
6
7from argparse import ArgumentParser
8from AthenaCommon.Logging import log
9from AthenaConfiguration.AllConfigFlags import initConfigFlags
10from AthenaConfiguration.MainServicesConfig import MainServicesCfg
11
12# Argument parsing
13parser = ArgumentParser("RunMaterialMapping.py")
14parser.add_argument("detectors", metavar="detectors", type=str, nargs="*",
15 help="Specify the list of detectors")
16parser.add_argument("--localgeo", default=False, action="store_true",
17 help="Use local geometry Xml files")
18parser.add_argument("--geoModelSqLiteFile", default = "", help="Read geometry from sqlite file")
19parser.add_argument("-V", "--verboseAccumulators", default=False,
20 action="store_true",
21 help="Print full details of the AlgSequence")
22parser.add_argument("-S", "--verboseStoreGate", default=False,
23 action="store_true",
24 help="Dump the StoreGate(s) each event iteration")
25parser.add_argument("--maxEvents",default=10, type=int,
26 help="The number of events to run. 0 skips execution")
27parser.add_argument("--skipEvents",default=0, type=int,
28 help="The number of events to skip")
29from AthenaConfiguration.TestDefaults import defaultGeometryTags
30parser.add_argument("--geometrytag",default=defaultGeometryTags.RUN4, type=str,
31 help="The geometry tag to use")
32parser.add_argument("--inputFile",
33 required=True, type=str,
34 help="Input files to be used for the mapping procedure. They must contain the material track information, which was previously produced with the 'RunGeantinoMaterialTrackProduction.py'")
35args = parser.parse_args()
36
37
38# Some info about the job
39print("----RunMaterialMapping for ITk geometry----")
40print()
41print("Using Geometry Tag: "+args.geometrytag)
42if args.localgeo:
43 print("...overridden by local Geometry Xml files")
44print("Input material track file:"+args.inputFile)
45if not args.detectors:
46 print("Running complete detector")
47else:
48 print("Running with: {}".format(", ".join(args.detectors)))
49print()
50
51# Configure
52flags = initConfigFlags()
53if args.localgeo:
54 flags.ITk.Geometry.AllLocal = True
55
56flags.Input.Files = []
57flags.Input.isMC=True
58flags.GeoModel.AtlasVersion = args.geometrytag
59flags.IOVDb.GlobalTag = "OFLCOND-SIM-00-00-00"
60flags.GeoModel.Align.Dynamic = False
61
62# This should run serially
63flags.Concurrency.NumThreads = 1
64flags.Concurrency.NumConcurrentEvents = 1
65
66from AthenaConfiguration.DetectorConfigFlags import getEnabledDetectors, setupDetectorFlags
67from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors
68
69if args.geoModelSqLiteFile:
70 flags.GeoModel.SQLiteDB = True
71 flags.GeoModel.SQLiteDBFullPath = args.geoModelSqLiteFile
72 # hack to set Run4 for running on muon dead material geometry
73 from AthenaConfiguration.Enums import LHCPeriod
74 flags.GeoModel.Run = LHCPeriod.Run4
75else:
76 defaultDetectors = ['ITkPixel', 'ITkStrip']
77 detectors = args.detectors if 'detectors' in args and args.detectors else defaultDetectors
78 detectors.append('Bpipe') # always run with beam pipe
79 setupDetectorFlags(flags, detectors, toggle_geometry=True)
80
81flags.Acts.TrackingGeometry.UseBlueprint = True
82
83flags.Exec.SkipEvents = args.skipEvents
84
85log.debug('Lock config flags now.')
86flags.lock()
87
88# Construct our accumulator to run
89acc = MainServicesCfg(flags)
90
91
92if args.verboseAccumulators:
93 acc.printConfig(withDetails=True)
94if args.verboseStoreGate:
95 acc.getService("StoreGateSvc").Dump = True
96
97log.debug('Dumping of ConfigFlags now.')
98flags.dump()
99
100import glob
101from ActsConfig.ActsMaterialConfig import MaterialMappingCfg
102acc.merge(MaterialMappingCfg(flags, inputFiles=glob.glob(args.inputFiles), StoreTracks=False))
103
104acc.printConfig(withDetails = True, summariseProps = True)
105
106acc.run(maxEvents=args.maxEvents)
107
108
void print(char *figname, TCanvas *c1)