def CalcI(Theta_Hwp, PositivePol, Q_IP=0, U_IP=0): M_Hwp = Mt.ApplyRotation(Mt.ComMatrix(0, np.pi), Theta_Hwp) M_Pol = Mt.Polarizer(PositivePol) M_IP = np.zeros((4, 4)) M_IP[1, 0] = Q_IP M_IP[2, 0] = U_IP M_IP[0, 0] = 1 M_IP[1, 1] = 1 M_IP[2, 2] = 1 M_IP[3, 3] = 1 return np.linalg.multi_dot([M_Pol, M_IP, M_Hwp])
CalcI(Theta_Hwp_Plus, True, IP_Q, IP_U) - CalcI(Theta_Hwp_Plus, False, IP_Q, IP_U)) X_Min = Round( CalcI(Theta_Hwp_Min, True, IP_Q, IP_U) - CalcI(Theta_Hwp_Min, False, IP_Q, IP_U)) Measured_IP_Plus_List.append(X_Plus[0, 0]) Measured_IP_Min_List.append(X_Min[0, 0]) #print(X_Plus) #print(X_Min) #plt.plot(IP_Q_List,Measured_IP_Plus_List) #plt.plot(IP_Q_List,Measured_IP_Min_List) #plt.show() R_HWP = 170 * np.pi / 180 M_HWP_Q1 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 0 * np.pi / 180) M_HWP_Q2 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 45 * np.pi / 180) M_HWP_U1 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 22.5 * np.pi / 180) M_HWP_U2 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 67.5 * np.pi / 180) M_HWP_X1 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 11.25 * np.pi / 180) M_HWP_X2 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 56.25 * np.pi / 180) M_HWP_Y1 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 33.75 * np.pi / 180) M_HWP_Y2 = Mt.ApplyRotation(Mt.ComMatrix(0, R_HWP), 78.75 * np.pi / 180) M_Der1 = Mt.ApplyRotation(Mt.ComMatrix(0, 90 * np.pi / 180), 40 * np.pi / 180) M_Der2 = Mt.ApplyRotation(Mt.ComMatrix(0, 90 * np.pi / 180), 140 * np.pi / 180) M_HWP_Q = M_HWP_Q1 - M_HWP_Q2 M_HWP_U = M_HWP_U1 - M_HWP_U2 M_HWP_X = M_HWP_X1 - M_HWP_X2