Links

Content Skeleton

This Page

Comparing Opticks with G4 for test geometry and light sources

summary

  • P polarized matches well (with polvec in initial direction of the photon)
  • S polarized are way off, looks to be due to Op playing Russian Roulette with S/P Polarization choice
    • TODO: implement the G4 way of doing things in Op

TODO

  • check with simple box-in-box geometry with planar reflection
---- P -----
Evt(6,"torch","rainbow","P Op")
                8ccd     943087 :                           TORCH BT BT SA
                 8bd      30954 :                              TORCH BR SA
               8cbcd      19554 :                        TORCH BT BR BT SA
              8cbbcd       2540 :                     TORCH BT BR BR BT SA
               86ccd       1239 :                        TORCH BT BT BS SA
             8cbbbcd        756 :                  TORCH BT BR BR BR BT SA
                 86d        530 :                              TORCH BS SA
            8cbbbbcd        310 :               TORCH BT BR BR BR BR BT SA
                 4cd        172 :                              TORCH BT AB
           8cbbbbbcd        146 :            TORCH BT BR BR BR BR BR BT SA
                4ccd        135 :                           TORCH BT BT AB
               8c6cd        132 :                        TORCH BT BS BT SA
          bbbbbbbbcd         96 :         TORCH BT BR BR BR BR BR BR BR BR
          8cbbbbbbcd         76 :         TORCH BT BR BR BR BR BR BR BT SA
                  4d         51 :                                 TORCH AB
tot: 1000000
Evt(-6,"torch","rainbow","P G4")
                8ccd     943093 :                           TORCH BT BT SA
                 8bd      31029 :                              TORCH BR SA
               8cbcd      19431 :                        TORCH BT BR BT SA
              8cbbcd       2601 :                     TORCH BT BR BR BT SA
               86ccd       1212 :                        TORCH BT BT BS SA
             8cbbbcd        757 :                  TORCH BT BR BR BR BT SA
                 86d        517 :                              TORCH BS SA
            8cbbbbcd        316 :               TORCH BT BR BR BR BR BT SA
                 4cd        202 :                              TORCH BT AB
           8cbbbbbcd        144 :            TORCH BT BR BR BR BR BR BT SA
               8c6cd        144 :                        TORCH BT BS BT SA
          8bbbbbbbcd        127 :         TORCH BT BR BR BR BR BR BR BR SA
                4ccd        105 :                           TORCH BT BT AB
          8cbbbbbbcd         77 :         TORCH BT BR BR BR BR BR BR BT SA
                  4d         54 :                                 TORCH AB
tot: 1000000
---- S -----
Evt(5,"torch","rainbow","S Op")
                8ccd     819264 :                           TORCH BT BT SA
                 8bd     101941 :                              TORCH BR SA
               8cbcd      61864 :                        TORCH BT BR BT SA
              8cbbcd       9691 :                     TORCH BT BR BR BT SA
             8cbbbcd       2557 :                  TORCH BT BR BR BR BT SA
            8cbbbbcd       1049 :               TORCH BT BR BR BR BR BT SA
               86ccd       1047 :                        TORCH BT BT BS SA
                 86d        507 :                              TORCH BS SA
           8cbbbbbcd        485 :            TORCH BT BR BR BR BR BR BT SA
          bbbbbbbbcd        311 :         TORCH BT BR BR BR BR BR BR BR BR
          8cbbbbbbcd        262 :         TORCH BT BR BR BR BR BR BR BT SA
                 4cd        162 :                              TORCH BT AB
                86bd        140 :                           TORCH BR BS SA
          cbbbbbbbcd        136 :         TORCH BT BR BR BR BR BR BR BR BT
               8c6cd        128 :                        TORCH BT BS BT SA
tot: 1000000
Evt(-5,"torch","rainbow","S G4")
                8ccd     881262 :                           TORCH BT BT SA
                 8bd      66471 :                              TORCH BR SA
               8cbcd      40644 :                        TORCH BT BR BT SA
              8cbbcd       6131 :                     TORCH BT BR BR BT SA
             8cbbbcd       1706 :                  TORCH BT BR BR BR BT SA
               86ccd       1065 :                        TORCH BT BT BS SA
            8cbbbbcd        708 :               TORCH BT BR BR BR BR BT SA
                 86d        484 :                              TORCH BS SA
           8cbbbbbcd        319 :            TORCH BT BR BR BR BR BR BT SA
          8bbbbbbbcd        297 :         TORCH BT BR BR BR BR BR BR BR SA
                 4cd        170 :                              TORCH BT AB
          8cbbbbbbcd        160 :         TORCH BT BR BR BR BR BR BR BT SA
               8c6cd        115 :                        TORCH BT BS BT SA
                4ccd         99 :                           TORCH BT BT AB
                86bd         69 :                           TORCH BR BS SA
tot: 1000000

ggv-rainbow P pol

In [8]: evt_op.p.rpol_(0)
Out[8]:
array([[ 1.,  0.,  0.],
       [ 1.,  0.,  0.],
       [ 1.,  0.,  0.],
       ...,
       [ 1.,  0.,  0.],
       [ 1.,  0.,  0.],
       [ 1.,  0.,  0.]])

In [9]: evt_g4.p.rpol_(0)
Out[9]:
array([[ 1.,  0.,  0.],
       [ 1.,  0.,  0.],
       [ 1.,  0.,  0.],
       ...,
       [ 1.,  0.,  0.],
       [ 1.,  0.,  0.],
       [ 1.,  0.,  0.]])

ggv-rainbow S pol

In [4]: evt_g4.s.rpol_(0)
Out[4]:
array([[ 0.    , -0.0709,  1.    ],
       [ 0.    ,  0.1496,  0.9921],
       [ 0.    , -0.1024,  0.9921],
       ...,
       [ 0.    ,  0.0866,  1.    ],
       [ 0.    , -0.0551,  1.    ],
       [ 0.    ,  0.0236,  1.    ]])

In [5]: evt_op.s.rpol_(0)
Out[5]:
array([[ 0.    , -0.9291,  0.378 ],
       [ 0.    , -0.9685,  0.2441],
       [ 0.    ,  0.    ,  1.    ],
       ...,
       [ 0.    , -0.937 , -0.3465],
       [ 0.    ,  0.4016,  0.9134],
       [ 0.    ,  1.    , -0.0551]])
In [32]: evt_g4.s.rpost_(0)
Out[32]:
array([[-600.0183,  -42.7747,  -26.7342,    0.    ],
       [-600.0183,   88.5891,  -44.203 ,    0.    ],
       [-600.0183,  -63.3198,  -62.6606,    0.    ],
       ...,
       [-600.0183,   52.4064,  -78.1518,    0.    ],
       [-600.0183,  -32.5938,  -64.8213,    0.    ],
       [-600.0183,   15.9673,   20.9845,    0.    ]])

In [34]: pos_g4 = evt_g4.s.rpost_(0)[:,:3]

In [35]: phi_g4 = np.arctan2(pos_g4[:,2], pos_g4[:,1])    # flat -pi:pi



In [38]: pos_op = evt_op.s.rpost_(0)[:,:3]

In [39]: pos_op
Out[39]:
array([[-599.9817,   32.4473,   79.6899],
       [-599.9817,   23.6579,   93.0204],
       [-599.9817,   19.7394,    0.0366],
       ...,
       [-599.9817,  -33.9488,   91.4823],
       [-599.9817,   20.5817,   -9.0091],
       [-599.9817,   -0.9888,  -18.9703]])

In [40]: phi_op = np.arctan2(pos_op[:,1], pos_op[:,2])     # flat -pi:pi
In [44]: opx = np.zeros((len(phi_op),3), dtype=np.float32)

In [49]: opx[:,1] = -np.sin(phi_op)

In [50]: opx[:,2] = np.cos(phi_op)

In [51]: opx
Out[51]:
array([[ 0.    , -0.9262,  0.3771],
       [ 0.    , -0.9691,  0.2465],
       [ 0.    , -0.0019,  1.    ],
       ...,
       [ 0.    , -0.9375, -0.3479],
       [ 0.    ,  0.401 ,  0.9161],
       [ 0.    ,  0.9986, -0.0521]], dtype=float32)


In [52]: evt_op.s.rpol_(0)
Out[52]:
array([[ 0.    , -0.9291,  0.378 ],
       [ 0.    , -0.9685,  0.2441],
       [ 0.    ,  0.    ,  1.    ],
       ...,
       [ 0.    , -0.937 , -0.3465],
       [ 0.    ,  0.4016,  0.9134],
       [ 0.    ,  1.    , -0.0551]])

Polarization Progression

S Op pol vector stays alive modulo sign flips, never leaking into X:

In [6]: evt_op.s.rpol_(0)
Out[6]:
array([[ 0.    , -0.9291,  0.378 ],
       [ 0.    , -0.9685,  0.2441],
       [ 0.    ,  0.    ,  1.    ],
       ...,
       [ 0.    , -0.937 , -0.3465],
       [ 0.    ,  0.4016,  0.9134],
       [ 0.    ,  1.    , -0.0551]])

In [7]: evt_op.s.rpol_(1)
Out[7]:
array([[ 0.    , -0.9291,  0.378 ],
       [ 0.    , -0.9685,  0.2441],
       [ 0.    ,  0.    ,  1.    ],
       ...,
       [ 0.    , -0.937 , -0.3465],
       [ 0.    ,  0.4016,  0.9134],
       [ 0.    ,  1.    , -0.0551]])

In [8]: evt_op.s.rpol_(2)
Out[8]:
array([[ 0.    ,  0.9291, -0.378 ],
       [ 0.    ,  0.9685, -0.2441],
       [ 0.    ,  0.    , -1.    ],
       ...,
       [ 0.    ,  0.937 ,  0.3465],
       [ 0.    , -0.4016, -0.9134],
       [ 0.    , -1.    ,  0.0551]])

In [9]: evt_op.s.rpol_(3)
Out[9]:
array([[ 0.    ,  0.9291, -0.378 ],
       [ 0.    ,  0.9685, -0.2441],
       [ 0.    ,  0.    , -1.    ],
       ...,
       [ 0.    ,  0.937 ,  0.3465],
       [ 0.    , -0.4016, -0.9134],
       [ 0.    , -1.    ,  0.0551]])

In [10]: evt_op.s.rpol_(4)
Out[10]:
array([[-1.    , -1.    , -1.    ],
       [ 0.    ,  0.9685, -0.2441],
       [-1.    , -1.    , -1.    ],
       ...,
       [-1.    , -1.    , -1.    ],
       [-1.    , -1.    , -1.    ],
       [-1.    , -1.    , -1.    ]])

In [11]:

G4 pol different approach:

In [11]: evt_g4.s.rpol_(0)
Out[11]:
array([[ 0.    ,  0.8504, -0.5276],
       [ 0.    , -0.8976, -0.4488],
       [ 0.    ,  0.7087, -0.7008],
       ...,
       [ 0.    ,  0.0787,  1.    ],
       [ 0.    ,  0.2283, -0.9764],
       [ 0.    ,  0.2835,  0.9606]])

In [12]: evt_g4.s.rpol_(1)
Out[12]:
array([[-0.063 ,  0.8425, -0.5276],
       [-0.1417,  0.8189,  0.5591],
       [-0.0079,  0.7087, -0.7008],
       ...,
       [-0.3307,  0.2283, -0.9134],
       [-0.1811,  0.6299,  0.7559],
       [-0.1102,  0.7638, -0.6378]])

In [13]: evt_g4.s.rpol_(2)
Out[13]:
array([[ 0.126 ,  0.1102, -0.9843],
       [-0.1417,  0.8189,  0.5591],
       [ 0.0079,  0.7008, -0.7165],
       ...,
       [ 0.622 ,  0.0787,  0.7717],
       [ 0.3622,  0.2283, -0.9055],
       [ 0.2126,  0.2835,  0.937 ]])

In [14]: evt_g4.s.rpol_(3)
Out[14]:
array([[ 0.126 ,  0.1102, -0.9843],
       [-1.    , -1.    , -1.    ],
       [ 0.0079,  0.7008, -0.7165],
       ...,
       [ 0.622 ,  0.0787,  0.7717],
       [ 0.3622,  0.2283, -0.9055],
       [ 0.2126,  0.2835,  0.937 ]])

In [15]: