def analyze(): """ """ if os.path.exists(ANALYSIS_FILE_PATH): logger.info('%s exists, delete it if you want to recreate it.' %\ ANALYSIS_FILE_PATH) return modf = load_mrf('xipe_goal') logger.info('Opening output file %s...' % ANALYSIS_FILE_PATH) analysis_file = open(ANALYSIS_FILE_PATH, 'w') for i, (_min, _max) in enumerate(PHASE_BINNING): _evt_file = xEventFile(_sel_file_path(i)) _energy = _evt_file.event_data['ENERGY'] _phase = _evt_file.event_data['PHASE'] exp = (polarization_degree(_energy, _phase, 0, 0)*modf(_energy)).sum()/\ modf(_energy).sum() _mcube = xBinnedModulationCube(_mcube_file_path(i)) _mcube.fit() _fit_results = _mcube.fit_results[-1] print _fit_results print exp print polarization_degree(_mcube.emean[-1], _phase, 0, 0) raw_input() _phase = 0.5*(_min + _max) _phase_err = 0.5*(_max - _min) _pol_deg = _fit_results.polarization_degree _pol_deg_err = _fit_results.polarization_degree_error _pol_angle = _fit_results.phase _pol_angle_err = _fit_results.phase_error _data = (_phase, _phase_err, _pol_deg, _pol_deg_err, _pol_angle, _pol_angle_err) _fmt = ('%.4e ' * len(_data)).strip() _fmt = '%s\n' % _fmt _line = _fmt % _data analysis_file.write(_line) analysis_file.close()
def plot(save_plots=False): """ """ sim_label = 'XIPE %s ks' % (SIM_DURATION/1000.) mod_label = 'Input model' _phase, _phase_err, _pol_deg, _pol_deg_err, _pol_angle,\ _pol_angle_err = numpy.loadtxt(ANALYSIS_FILE_PATH, unpack=True) _pol_angle = numpy.degrees(_pol_angle) _pol_angle_err = numpy.degrees(_pol_angle_err) _colors = ['blue']*len(_pol_deg) plt.figure('Polarization degree') _good_fit = _pol_deg > 2*_pol_deg_err _bad_fit = numpy.logical_not(_good_fit) plt.errorbar(_phase[_good_fit], _pol_deg[_good_fit], xerr=_phase_err[_good_fit], yerr=_pol_deg_err[_good_fit], fmt='o', label=sim_label, color='blue') plt.errorbar(_phase[_bad_fit], _pol_deg[_bad_fit], xerr=_phase_err[_bad_fit], yerr=_pol_deg_err[_bad_fit], fmt='o', color='gray') #pol_degree_spline.plot(show=False, label=mod_label, color='green') _x = numpy.linspace(0, 1, 100) _y = polarization_degree(2.38, _x, 0, 0) plt.plot(_x, _y) plt.axis([0., 1., 0., 1.]) plt.legend(bbox_to_anchor=(0.37, 0.95)) plt.figtext(0.6, 0.8, '%.2f--%.2f keV' %\ (E_BINNING[0], E_BINNING[-1]), size=16) if save_plots: plt.savefig('J1708_per_polarization_degree.png') plt.figure('Polarization angle') plt.errorbar(_phase[_good_fit], _pol_angle[_good_fit], xerr=_phase_err[_good_fit], yerr=_pol_angle_err[_good_fit], fmt='o', label=sim_label, color='blue') plt.errorbar(_phase[_bad_fit], _pol_angle[_bad_fit], xerr=_phase_err[_bad_fit], yerr=_pol_angle_err[_bad_fit], fmt='o', color='gray') #pol_angle_spline.plot(show=False, label=mod_label, color='green', # scale=numpy.radians(1.)) _x = numpy.linspace(0, 1, 100) _y = numpy.degrees(polarization_angle(2.56, _x, 0, 0)) plt.plot(_x, _y) plt.axis([0., 1., 0, 180]) plt.xlabel('Rotational phase') plt.ylabel('Polarization angle [$^\\circ$]') plt.legend(bbox_to_anchor=(0.37, 0.95)) plt.figtext(0.6, 0.8, '%.2f--%.2f keV' %\ (E_BINNING[0], E_BINNING[-1]), size=16) if save_plots: plt.savefig('J1708_per_polarization_angle.png') _ebinning = zip(E_BINNING[:-1], E_BINNING[1:]) if len(_ebinning) > 1: _ebinning.append((E_BINNING[0], E_BINNING[-1])) for i, (_emin, _emax) in enumerate(_ebinning): plt.figure('Phasogram %d' % i) phasogram = xBinnedPhasogram(_phasg_file_path(i)) #_scale = phasogram.counts.sum()/phasogram_spline.norm()/\ # len(phasogram.counts) #phasogram_spline.plot(show=False, label=mod_label, scale=_scale, # color='green') #print phasogram.counts phasogram.plot(show=False, color='blue', label=sim_label ) plt.legend(bbox_to_anchor=(0.37, 0.95)) plt.figtext(0.65, 0.8, '%.2f--%.2f keV' % (_emin, _emax), size=16) if save_plots: plt.savefig('J1708_per_phasogram_%d.png' % i) plt.show()