Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-07 07:52:17

0001 #!/usr/bin/env python
0002 # ==========================================================================
0003 #  AIDA Detector description implementation
0004 # --------------------------------------------------------------------------
0005 # Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
0006 # All rights reserved.
0007 #
0008 # For the licensing terms see $DD4hepINSTALL/LICENSE.
0009 # For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
0010 #
0011 # ==========================================================================
0012 
0013 import sys
0014 import errno
0015 import argparse
0016 import logging
0017 
0018 logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
0019 logger = logging.getLogger(__name__)
0020 
0021 parser = argparse.ArgumentParser()
0022 parser.description = "Check TGeo geometries for overlaps."
0023 parser.add_argument("-c", "--compact", dest="compact", default=None, nargs='+',
0024                     help="Define LCCDD style compact xml input",
0025                     metavar="<FILE>")
0026 parser.add_argument("-p", "--print",
0027                     dest="print_overlaps", default=True,
0028                     help="Print overlap information to standard output (default:True)",
0029                     metavar="<boolean>")
0030 parser.add_argument("-q", "--quiet",
0031                     action="store_false", dest="print_overlaps",
0032                     help="Do not print (disable --print)")
0033 parser.add_argument("-t", "--tolerance", dest="tolerance", default=0.1,
0034                     type=float,
0035                     help="Overlap checking tolerance. Unit is in [mm]. (default:0.1 mm)",
0036                     metavar="<double number>")
0037 parser.add_argument("-o", "--option", dest="option", default='',
0038                     help="Overlap checking option ('' or 's')",
0039                     metavar="<string>")
0040 
0041 args = parser.parse_args()
0042 
0043 if args.compact is None:
0044   logger.info("    %s", parser.format_help())
0045   sys.exit(1)
0046 
0047 try:
0048   from ROOT import gROOT
0049   gROOT.SetBatch(1)
0050 except ImportError as X:
0051   logger.error('PyROOT interface not accessible: %s', str(X))
0052   logger.error("%s", parser.format_help())
0053   sys.exit(errno.ENOENT)
0054 
0055 try:
0056   import dd4hep
0057 except ImportError as X:
0058   logger.error('dd4hep python interface not accessible: %s', str(X))
0059   logger.error("%s", parser.format_help())
0060   sys.exit(errno.ENOENT)
0061 #
0062 #
0063 dd4hep.setPrintLevel(dd4hep.OutputLevel.ERROR)
0064 logger.info('+++%s', 120 * '=')
0065 logger.info('+++ Loading compact geometry:')
0066 for xmlfile in args.compact:
0067   logger.info('+++ ' + xmlfile)
0068 logger.info('+++ tolerance: %f, option: %s', args.tolerance, args.option)
0069 logger.info('+++%s\n', 120 * '=')
0070 description = dd4hep.Detector.getInstance()
0071 for xmlfile in args.compact:
0072   description.fromXML(xmlfile)
0073 
0074 description.manager().CheckOverlaps(args.tolerance, args.option)
0075 #
0076 #
0077 if args.print_overlaps:
0078   logger.info('+++%s', 120 * '=')
0079   logger.info('+++ Printing overlaps of geometry:')
0080   for xmlfile in args.compact:
0081     logger.info('+++ %s', xmlfile)
0082   logger.info('+++%s\n', 120 * '=')
0083   description.manager().PrintOverlaps()
0084 #
0085 #
0086 logger.info('+++ Execution finished...')
0087 sys.exit(0)