Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:13

0001 #!/usr/bin/env python
0002 
0003 import numpy as np
0004 from numpy.linalg import multi_dot
0005 
0006 from opticks.ana.fold import Fold
0007 from opticks.CSG.CSGFoundry import CSGFoundry 
0008 from opticks.ana.eprint import eprint, epr
0009 from opticks.sysrap.stree import stree
0010 
0011 
0012 def check_inverse_pair(f, a_="inst", b_="iinst" ):
0013     """
0014     :param f: Fold instance
0015      
0016     CAUTION : this clears the identity info prior to checking transforms
0017     """
0018     a = getattr(f, a_)
0019     b = getattr(f, b_)
0020 
0021     a[:,:,3] = [0.,0.,0.,1.]
0022     b[:,:,3] = [0.,0.,0.,1.]
0023 
0024     assert len(a) == len(b)
0025 
0026     chk = np.zeros( (len(a), 4, 4) )   
0027     for i in range(len(a)): chk[i] = np.dot( a[i], b[i] )   
0028     chk -= np.eye(4)
0029 
0030     print("check_inverse_pair :  %s %s " % (a_, b_))
0031     print(chk.min(), chk.max())
0032 
0033 
0034 def compare_f_with_cf(f, cf ):
0035     print("compare_f_with_cf")
0036     eprint("(cf.inst - f.inst_f4).max()", globals(), locals())  
0037     eprint("(cf.inst - f.inst_f4).min()", globals(), locals())  
0038 
0039 
0040 def check_inst(f, cf):
0041 
0042     eprint("np.abs(cf.inst-f.inst_f4).max()", globals(), locals() ) 
0043     w = epr("w = np.where( np.abs(cf.inst-f.inst_f4) > 0.0001 )",  globals(), locals() )
0044 
0045     check_inverse_pair(f, "inst", "iinst" )
0046     check_inverse_pair(f, "inst_f4", "iinst_f4" )
0047     compare_f_with_cf(f, cf ) 
0048 
0049     a_inst = cf.inst.copy() 
0050     b_inst = f.inst_f4.copy() 
0051 
0052     print("a_inst[-1]")
0053     print(a_inst[-1])
0054     print("b_inst[-1]")
0055     print(b_inst[-1])
0056 
0057 
0058 
0059 if __name__ == '__main__':
0060 
0061     acf = CSGFoundry.Load("$A_CFBASE")
0062     print(acf)
0063 
0064     bcf = CSGFoundry.Load("$B_CFBASE")
0065     print(bcf)
0066 
0067     """
0068 
0069         node :        (23518, 4, 4)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/node.npy 
0070          itra :         (8159, 4, 4)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/itra.npy 
0071      meshname :               (139,)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/meshname.txt 
0072          meta :                 (7,)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/meta.txt 
0073      primname :              (3248,)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/primname.txt 
0074       mmlabel :                (10,)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/mmlabel.txt 
0075          tran :         (8159, 4, 4)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/tran.npy 
0076          inst :        (48477, 4, 4)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/inst.npy 
0077         solid :           (10, 3, 4)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/solid.npy 
0078          prim :         (3248, 4, 4)  : /tmp/blyth/opticks/ntds3_aug5/G4CXOpticks/CSGFoundry/prim.npy 
0079     """
0080 
0081     eprint("np.all( acf.node == bcf.node )", globals(), locals() )  
0082     eprint("np.all( acf.itra == bcf.itra )", globals(), locals() )
0083     eprint("np.all( acf.meshname == bcf.meshname )", globals(), locals() )
0084     #eprint("np.all( acf.meta == bcf.meta)" , globals(), locals() )
0085     eprint("np.all( acf.primname == bcf.primname )", globals(), locals() )
0086     eprint("np.all( acf.mmlabel == bcf.mmlabel )", globals(), locals() ) 
0087     eprint("np.all( acf.tran == bcf.tran )", globals(), locals() )
0088     eprint("np.all( acf.inst == bcf.inst )", globals(), locals() )
0089     eprint("np.all( acf.inst[:,:,:3] == bcf.inst[:,:,:3] ) ", globals(), locals(), tail=" exclude 4th column" )
0090     eprint("np.all( acf.solid == bcf.solid )", globals(), locals() )
0091     eprint("np.all( acf.prim == bcf.prim ) ", globals(), locals() )
0092 
0093 
0094 
0095