File indexing completed on 2026-09-15 08:22:50
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 import sys
0014 import errno
0015 import optparse
0016 import logging
0017
0018 logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
0019 logger = logging.getLogger(__name__)
0020
0021 parser = optparse.OptionParser()
0022 parser.description = "TGeo Geometry checking."
0023 parser.formatter.width = 132
0024 parser.add_option("-c", "--compact", dest="compact", default=None,
0025 help="Define LCCDD style compact xml input",
0026 metavar="<FILE>")
0027
0028 parser.add_option("-f", "--full",
0029 dest="full", default=False,
0030 help="Full geometry checking",
0031 metavar="<boolean>")
0032
0033 parser.add_option("-n", "--ntracks",
0034 dest="num_tracks", default=1000000,
0035 help="Number of tracks [requires '--full']",
0036 metavar="<integer>")
0037
0038 parser.add_option("-x", "--vx",
0039 dest="vx", default=0.0,
0040 help="X-position of track origin vertex [requires '--full']",
0041 metavar="<double>")
0042
0043 parser.add_option("-y", "--vy",
0044 dest="vy", default=0.0,
0045 help="Y-position of track origin vertex [requires '--full']",
0046 metavar="<double>")
0047
0048 parser.add_option("-z", "--vz",
0049 dest="vz", default=0.0,
0050 help="Z-position of track origin vertex [requires '--full']",
0051 metavar="<double>")
0052
0053 parser.add_option("-o", "--option", dest="option", default='ob',
0054 help="TGeoManager geometry check option default:ob",
0055 metavar="<string>")
0056
0057 (opts, args) = parser.parse_args()
0058
0059 if opts.compact is None:
0060 logger.info(" %s", parser.format_help())
0061 sys.exit(1)
0062
0063 try:
0064 from ROOT import gROOT
0065 gROOT.SetBatch(1)
0066 except ImportError as X:
0067 logger.error('PyROOT interface not accessible: %s', str(X))
0068 sys.exit(errno.ENOENT)
0069
0070 try:
0071 import dd4hep
0072 except ImportError as X:
0073 logger.error('dd4hep python interface not accessible: %s', str(X))
0074 sys.exit(errno.ENOENT)
0075
0076 dd4hep.setPrintLevel(dd4hep.OutputLevel.ERROR)
0077 logger.info('+++%s\n+++ Loading compact geometry:%s\n+++%s', 120 * '=', opts.compact, 120 * '=')
0078 description = dd4hep.Detector.getInstance()
0079 description.fromXML(opts.compact)
0080 opts.num_tracks = int(opts.num_tracks)
0081 opts.vx = float(opts.vx)
0082 opts.vy = float(opts.vy)
0083 opts.vz = float(opts.vz)
0084 logger.info('+++%s\n+++ Checking geometry:%s full-check:%s\n+++%s', 120 * '=', opts.compact, opts.full, 120 * '=')
0085 if opts.full:
0086 logger.info('+++ # tracks:%d vertex:(%7.3f, %7.3f, %7.3f) [cm]', opts.num_tracks, opts.vx, opts.vy, opts.vz)
0087 description.manager().CheckGeometryFull(opts.num_tracks, opts.vx, opts.vy, opts.vz, opts.option)
0088 else:
0089 description.manager().CheckGeometry()
0090
0091
0092 logger.info('+++ Execution finished...')
0093 sys.exit(0)