ATLAS Offline Software
Loading...
Searching...
No Matches
RunMaterialValidation.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 validation
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("RunMaterialValidation.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")
32# parser.add_argument("--inputMaterial",
33# required=True, type=str,
34# help="Input material maps produced in the material mapping process.")
35args = parser.parse_args()
36
37
38# Some info about the job
39print("----RunMaterialValidation for ITk geometry----")
40print()
41print("Using Geometry Tag: "+args.geometrytag)
42if args.localgeo:
43 print("...overridden by local Geometry Xml files")
44if not args.detectors:
45 print("Running complete detector")
46else:
47 print("Running with: {}".format(", ".join(args.detectors)))
48print()
49
50# Configure
51flags = initConfigFlags()
52if args.localgeo:
53 flags.ITk.Geometry.AllLocal = True
54
55flags.Input.Files = []
56flags.Input.isMC=True
57flags.GeoModel.AtlasVersion = args.geometrytag
58flags.IOVDb.GlobalTag = "OFLCOND-SIM-00-00-00"
59flags.GeoModel.Align.Dynamic = False
60
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', 'HGTD']
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
100from ActsConfig.ActsMaterialConfig import MaterialValidationCfg
101acc.merge(MaterialValidationCfg(flags,
102 StoreTracks=True,
103 MaterialTrackCollectionKey="OutputMaterialTracks"))
104
105acc.printConfig(withDetails = True, summariseProps = True)
106
107acc.run(maxEvents=args.maxEvents)
108
109
110
void print(char *figname, TCanvas *c1)