Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:48:48

0001 #!/usr/bin/env python
0002 
0003 import os, sys, logging, argparse, numpy as np
0004 log = logging.getLogger(__name__)
0005 from opticks.ana.key import keydir
0006 from opticks.ana.prim import Solid 
0007 
0008 class GParts(object):
0009     """
0010     Opticks executables run with option --savegparts Opticks::isSaveGPartsEnabled() 
0011     """
0012     def __init__(self, kd, basedir="$TMP/GParts"):
0013         basedir = os.path.expandvars(basedir)
0014 
0015         if not os.path.isdir(basedir):
0016             log.fatal("missing directory %s " % basedir)
0017             log.fatal("create using --savegparts option with any Opticks executable that invokes GGeo::deferredCreateGParts" )
0018             sys.exit(1)
0019         pass
0020 
0021 
0022         ii = sorted(list(map(int,os.listdir(basedir))))
0023         dirs = list(map(lambda i:os.path.join(basedir, str(i)), ii)) 
0024 
0025         solids = []
0026         for d in dirs:
0027             log.debug(d) 
0028             solid = Solid(d, kd)
0029             solids.append(solid)
0030         pass
0031 
0032         self.dirs = dirs 
0033         self.solids = solids
0034     pass
0035     def __getitem__(self, i):
0036          return self.solids[i]
0037 
0038     def __repr__(self):
0039         return "\n".join(list(map(repr,self.solids)))
0040 
0041 
0042 
0043 def parse_args(doc, **kwa):
0044     np.set_printoptions(suppress=True, precision=3, linewidth=200)
0045     parser = argparse.ArgumentParser(doc)
0046     parser.add_argument(     "ridx", nargs="*", type=int, help="GParts index to dump.")
0047     parser.add_argument(     "--level", default="info", help="logging level" ) 
0048     args = parser.parse_args()
0049     fmt = '[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s'
0050     logging.basicConfig(level=getattr(logging,args.level.upper()), format=fmt)
0051     return args  
0052 
0053 
0054 
0055 
0056 if __name__ == '__main__':
0057     args = parse_args(__doc__)
0058 
0059     kd = keydir(os.environ["OPTICKS_KEY"])
0060     gp = GParts(kd)
0061 
0062 
0063     if len(args.ridx) > 0:
0064         for ridx in args.ridx:
0065             print(gp[ridx])
0066         pass
0067     else:
0068         print(gp)
0069     pass
0070 
0071  
0072 
0073 
0074